(サービスからではなく) アプリケーションからの進行中の通知を管理します。
「終了」ボタンでタスクマネージャーからアプリケーションを終了すると、通知が消えます。
マルチタスク パネルからアプリケーションを削除すると、アプリケーションは強制終了されますが、通知は残ります。
私の質問は次のとおりです。
- このイベントをキャッチして通知をクリアする方法は?
- アプリケーションがマルチタスク パネルから削除されるとどうなりますか? アプリケーションは破棄されますが、プロセスは生き続けますか? それは正常ですか?
アップデートとして:
私のすべてのアクティビティは、MyActivity クラス (Activity を拡張する) をメソッドで拡張します。
@Override protected void onCreate(Bundle state) {
super.onCreate(state);
((MyApplication) getApplication()).onActivityCreate(this, state);
}
@Override protected void onDestroy() {
super.onDestroy();
((MyApplication) getApplication()).onActivityDestroy(this);
}
そして、私のアプリケーションは MyApplication クラス (アプリケーションを拡張する) をメソッドで拡張します:
private List<Activity> activities = new ArrayList<Activity>();
protected final void onActivityCreate(Activity activity, Bundle state) {
if(activities.isEmpty() && state == null) {
onStart();
}
activities.add(activity);
}
protected final void onActivityDestroy(Activity activity) {
activities.remove(activity);
if(activities.isEmpty() && activity.isFinishing()) {
onExit();
}
}
protected void onStart() {
// some code
}
protected void onExit() {
// some code
notificationManager.cancel(NOTIFICATION_ID);
}
activities
実行中のすべてのアクティビティのリストです
最も単純なメカニズムではありませんが、必要です
代わりにサービスを使用する必要がありますか?
新しい更新として:
私の onExit() メソッドで、次のように何が起こるかを知るためにデバッグ メッセージをログに記録すると:
public void onExit() {
for(int i = 0; i < 100; i++) {
Log.d(TAG, "onExit");
}
}
すべてではなく、少量のログが 2 回に 1 回表示されます (例: 13/100)
したがって、マルチタスクパネルからアプリケーションを削除すると、クローズメソッドが適切に終了するのを待たずにアプリケーションを強制終了することを理解しています...しかし、なぜ処理しないのですか?!
どうすれば適切に強制終了できますか?