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

标签 android notifications

在我的应用程序中,我有几个服务正在运行。当用户停止应用程序(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/

相关文章:

ios - Firebase 事件监听器不起作用,我无法收到正确的快照

php - 使用 phpmyadmin 显示通知

android - 单击通知后关闭状态栏

java - 如何使用 sse android 发布通知

android - 根据 Android 专用设备文档找不到 getContext()

java - Android addListenerOnButton 问题

android - 排行榜中的分数未更新

android - 如何在同一个 ListView 中同时实现 ontouch 和 onfling?

java - 登录到远程 mysql 数据库的身份验证

android - 在 com.google.android.gms :play-services-gcm:9. 0.0 中收到任何通知之前安装后关闭应用程序时无法显示 GCM 通知