【问题标题】:Clear notification in status bar after application crashed应用程序崩溃后清除状态栏中的通知
【发布时间】:2011-09-30 06:42:52
【问题描述】:

在我的应用程序中,我有几个服务正在运行。当用户停止应用程序(UI 部分)时,服务仍然在后台运行并在状态栏中显示通知(每个服务都有一个)。单击它时会出现一个对话框,可以选择取消相应的服务。

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

当我尝试点击通知打开活动时,真正的错误是 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);
}

谢谢

【问题讨论】:

  • 如果我是您的应用程序的用户,我希望答案是“更加努力地工作,完全避免应用程序崩溃”。
  • K-ballo:即使是最好的应用程序也会崩溃,所以我认为这是一个很好的问题。没有通知比死通知更好。

标签: android notifications


【解决方案1】:

你可以打电话

Thread.setDefaultUncaughtExceptionHandler()

当您的应用程序在线程中未处理某些异常时,将调用一个处理程序。 如果线程由于未处理的异常而死亡,则会调用此处理程序。

在这里您需要进行清理工作。

这正是ACRA 崩溃报告库捕获崩溃的方式。

【讨论】:

  • 看来可以解决。 'UncaughtExceptionHandler handler = new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { getNotificationManager().cancelAll();抛出新的 RuntimeException(ex); } }; Thread.setDefaultUncaughtExceptionHandler(handler);'它清除通知。但现在我遇到了如何强制 android 关闭我的应用程序的问题。
【解决方案2】:

首先您需要确保您的application should not get crashed at any cost 并回答您的问题,您应该覆盖服务的onDestroy() 方法并在那里取消通知,因为它在服务停止或崩溃的两种情况下都适用.

由于crash不能使用onDestroy(),所以你需要输入try catch block并在出现异常后执行相应的操作。

【讨论】:

  • 我认为如果应用程序崩溃,onDestroy() 不会被调用。
  • @inazaruk:是的,你是对的。我检查了它,没有任何调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多