在我的应用程序中,我有几个服务正在运行。当用户停止应用程序(UI 部分)时,服务仍然在后台运行并在状态栏中显示通知(每个服务都有一个)。单击它时会出现一个对话框,可以选择取消相应的服务。
这是我的问题。当出现问题和应用程序崩溃时,状态栏区域中会保留通知。是否可以在显示标准 android 强制关闭对话框之前清除所有通知?
真正的错误是当我尝试打开点击通知的 Activity 时出现 NPE。它是固定的。但我只想知道如何在应用程序崩溃时清除所有内容。
这是我受老鼠帖子启发的最终解决方案。在创建方法中的应用程序中,我注册了 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);
}
谢谢
最佳答案
你可以打电话
Thread.setDefaultUncaughtExceptionHandler()
当您的应用程序在线程中未处理某些异常时,将调用一个处理程序。 如果 Thread 由于未处理的异常而死亡,则会调用此处理程序。
在这里你会做必要的清理工作。
这正是 ACRA 的方式崩溃报告库正在捕获崩溃。
关于android - 应用程序崩溃后清除状态栏中的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606803/