当我的应用因任何原因崩溃时,onDestroy()
方法未被调用。我的通知也没有删除。在应用程序崩溃时,应该在哪里调用notifi.cancel(1);
方法来删除通知?
@Override
protected void onDestroy() {
super.onDestroy();
if (nm != null) {
nm.cancel(0);
}
}
答案 0 :(得分:4)
不幸的是,当应用崩溃时,系统不会调用onDestroy()
。要在应用程序崩溃之前获得回调,您应该使用提到的here异常处理程序。您应该编写用于在异常处理程序中删除通知的代码。
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
new Thread() {
@Override
public void run() {
Looper.prepare();
// Cancel Notification
if (nm != null) {
nm.cancel(0);
}
Looper.loop();
}
}.start();
}
});
另外,您可能需要查看此very similar question。
答案 1 :(得分:0)
onDestory()
方法时,会调用 finish()
方法。因此,当您的应用崩溃时,不会调用onDestory()
方法。
check this check this also
哪里是运行notifi.cancel(1)的最佳位置;方法
您可以拨打notifi.cancel(1);
的任何地方。这就要求所需的一切。