应用程序崩溃后清除状态栏中的通知

在我的应用程序,我有几个服务运行。 当用户停止应用程序(UI部分)服务在后台保持运行并在状态栏中显示通知(每个服务都有一个)时。 点击它时出现对话框,select取消适当的服务。

这是我的问题。 出现问题时,应用程序崩溃通知仍保留在状态栏区域中。 显示标准的Android强制closures对话框之前是否可以清除所有通知?

当我尝试打开点击通知的活动时,真正的错误是NPE。 这是固定的。 但我只想知道如何清除应用程序崩溃时的一切。


这是我最后的解决scheme,由老鼠的职位启发。 在创build方法的应用程序中,我注册了Thread.setDefaultUncaughtExceptionHandler()

@Override public void onCreate() { super.onCreate(); this.notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); final UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); UncaughtExceptionHandler appHandler = new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { this.notificationManager.cancelAll(); defaultHandler.uncaughtException(thread, ex); } }; Thread.setDefaultUncaughtExceptionHandler(appHandler); } 

谢谢

Solutions Collecting From Web of "应用程序崩溃后清除状态栏中的通知"

你可以打电话

Thread.setDefaultUncaughtExceptionHandler()

当一个exception不是由你的应用程序在线程中处理时调用一个处理程序。 这个处理程序在线程由于未处理的exception而死的情况下被调用。

在这里你需要清理工作。

这正是ACRA崩溃报告库如何捕捉崩溃。

首先,您需要确保您的application should not get crashed at any costapplication should not get crashed at any cost并回答您的问题,您应该重写该服务的onDestroy()方法并取消通知,因为在服务停止的情况下,它崩溃。

因为在crash情况下你不能使用onDestroy() ,所以你需要把try catch block和得到exception后执行你的适当的动作。