2012-03-23 31 views
1

我在我的android應用程序的清單文件中聲明瞭廣播接收。一切正常。但是,當應用程序關閉時(通過Android設置中的「強制停止」按鈕),廣播接收器仍會響應廣播並再次啓動我的應用程序。Android在應用程序關閉時禁用BroadcastReceiver

有關如何阻止此問題的任何想法?

感謝

回答

2

已經有一個answer

基本上,您可以通過應用程序類的onDestroy方法中的PackageManager禁用廣播接收器,並在Application類的onCreate方法中再次啓用它。

+1

謝謝,這個工作,但是這是應該做的正確的事嗎? – jtnire 2012-03-23 12:17:22

0

呼叫unregisterReceiver在活動的方法的onDestroy和的onPause()。 在onCreate()和OnResume()中註冊它。

+0

正如在問題中提到,我使用的清單給我的接收機。 – jtnire 2012-03-23 12:17:42

1

應用程序沒有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."); 
    } 
}

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; }

相關問題