我管理来自我的应用程序(而不是来自服务)的持续通知。
当我使用“结束”按钮从任务管理器中终止应用程序时,通知消失。
当我从多任务面板中删除应用程序时,应用程序被杀死但通知仍然存在。
我的问题是:
- 如何捕获此事件以清除通知?
- 从多任务面板中删除应用程序时会发生什么?应用程序被销毁但进程仍然存在?正常吗?
作为更新:
我的所有活动都使用以下方法扩展了 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");
}
}
少量日志在两个上出现一次,而不是全部(例如:13/100)
所以,我知道从多任务面板中删除应用程序强制杀死应用程序而不等待关闭方法结束以正确完成......但为什么不处理?!
如何强制正确终止?