Androidのマニフェストファイルでブロードキャスト受信を宣言しました。すべて正常に動作します。しかし、アプリケーションがシャットダウンされると(Android設定の「強制停止」ボタンを介して)、ブロードキャストレシーバーはブロードキャストに応答し、アプリケーションを再び起動します。Androidが無効になっているときにBroadcastReceiverを無効にする
これをどのように止めることができますか?
おかげ
Androidのマニフェストファイルでブロードキャスト受信を宣言しました。すべて正常に動作します。しかし、アプリケーションがシャットダウンされると(Android設定の「強制停止」ボタンを介して)、ブロードキャストレシーバーはブロードキャストに応答し、アプリケーションを再び起動します。Androidが無効になっているときにBroadcastReceiverを無効にする
これをどのように止めることができますか?
おかげ
すでにanswerがあります。
基本的には、ApplicationクラスのonDestroyメソッドでPackageManager経由でブロードキャスト受信者を無効にし、ApplicationクラスのonCreateメソッドで再び有効にします。
コール・アクティビティのonDestroy方法でunregisterReceiverとonPause()。 onCreate()およびOnResume()に登録します。
質問で述べたように、私は私の受信機のためのマニフェストを使用しています。 – jtnire
アプリケーションにはonDestroyメソッドがありません。 MainActiviyが実行されている場合、放送受信機に私は常にチェックするので、それは。私は必ずアプリが動作した場合にアクティブにする必要がありために私のアプリでMainActivityを持っている。onTerminateを持っていますが、それは=呼び出されることはありませんです(ここで
は私のソリューションです。
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;
}
おかげで、この作品、しかし、これは行うには正しいことですか? – jtnire