Android在活动销毁或应用程序崩溃时删除通知

时间:2015-08-15 18:44:16

标签: android notifications

当我的应用因任何原因崩溃时,onDestroy()方法未被调用。我的通知也没有删除。在应用程序崩溃时,应该在哪里调用notifi.cancel(1);方法来删除通知?

@Override
protected void onDestroy() {
    super.onDestroy();

    if (nm != null) {
        nm.cancel(0);
    }

}

2 个答案:

答案 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);的任何地方。这就要求所需的一切。