Android отключает BroadcastReceiver при выключении приложения - PullRequest
1 голос
/ 23 марта 2012

Я получил широковещательный прием, объявленный в файле манифеста моего приложения для Android.Все работает нормальноТем не менее, когда приложение закрывается (с помощью кнопки «Force Stop» в настройках Android), приемник вещания все еще реагирует на трансляции и снова запускает мое приложение.

Любая идея о том, как я могу остановить это?

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

Уже есть ответ на это.

По сути, вы отключаете Broadcast Receiver через PackageManager в методе onDestroy вашего класса Application и снова включаете его в метод onCreate вашего класса Application.

1 голос
/ 08 февраля 2013

Приложение не имеет метода onDestroy. У него есть onTerminate, но он никогда не вызывается = (

Вот мое решение. У меня есть MainActivity в моем приложении, которое обязательно должно быть активным, если приложение работает. Поэтому в широковещательном приемнике я всегда проверяю, работает ли MainActiviy.

public void onReceive(final Context context, final Intent intent){
   if(isAppRunning(context)){
       // Do my handling
   }
   else{
       // You can disable receiver here
       Log.w(LOGTAG, "App not running. Ignore " + LOGTAG + " call.");
   }
}</p>

<code>protected boolean isAppRunning(Context context){
    String activity = MainActivity.class.getName();
    ActivityManager activityManager = (ActivityManager)context.
                                     getSystemService(Context.ACTIVITY_SERVICE);

    List<RunningTaskInfo> tasks = activityManager.
                                  getRunningTasks(Integer.MAX_VALUE);

    for(RunningTaskInfo task : tasks){
        if(activity.equals(task.baseActivity.getClassName())){
            return true;
        }
    }
    return false;
}
</code>

0 голосов
/ 23 марта 2012

Вызовите unregisterReceiver в методе действия onDestroy и onPause ().Зарегистрируйте его в onCreate () и OnResume ().

...