首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序崩溃/死亡时,句柄通知隐藏

当应用程序崩溃/死亡时,句柄通知隐藏
EN

Stack Overflow用户
提问于 2014-07-03 15:11:06
回答 1查看 1.5K关注 0票数 1

我正在创建一个音乐播放器应用程序。

当音乐播放时,我正在显示当前歌曲的notification (类似于默认的Android音乐播放器应用程序)。

我在Service中运行音乐,并且只在该服务中处理通知显示/隐藏。

当应用程序突然被破坏/崩溃时,音乐服务就会停止&背景中的音乐也会停止(我想这是正确的行为)。

但即使在坠机后,这份通知仍然存在。

我如何处理这个问题?

处理的一个场景:

音乐服务正在运行,并显示通知。

用户单击recent apps并杀死我的应用程序,因此服务停止,但通知仍然可见。

我是如何处理的:

如果音乐正在播放,用户完成了MainActivity,那么音乐应该继续在后台播放。

因此,如果是backpressed == true,那么在onDestroy()中,不要取消通知。(用户完成的活动)

否则,如果是backpressed == false,则在onDestroy()中发出通知。(突然死亡的活动)

代码语言:javascript
复制
@Override
public void onBackPressed() {
    super.onBackPressed();
    mBackPressed = true;
}

@Override
protected void onDestroy() {
    if (!mBackPressed) {
        mMusicService.hideStatusBarNotification();
    }

    super.onDestroy();
    Log.e(TAG, "onDestroy() called - Activity");
}

这是一个很好的方法。

,这只是一个场景,我想不出application+service是如何突然被杀死的&如何处理它?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-07-03 15:23:43

你处理这件事的方式对我来说很不错。另一种方法可以是添加一个Application类,该类捕获由您自己的代码未捕获的任何异常。通过这种方式,您可以确定该类中包含的代码在任何崩溃之前都会执行。这个班看起来可能是这样的:

代码语言:javascript
复制
public class MyApplication extends Application {
// uncaught exception handler variable
private Thread.UncaughtExceptionHandler defaultUEH;

// handler listener
private Thread.UncaughtExceptionHandler _unCaughtExceptionHandler =
        new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread thread, Throwable ex) {

                Log.e("UNCAUGHT EXCEPTION CAUGHT!", ex.toString());

                // Hide notification here ;)

                // re-throw critical exception further to the os (important)
                defaultUEH.uncaughtException(thread, ex);
            }
        };

public MyApplication() {
    defaultUEH = Thread.getDefaultUncaughtExceptionHandler();

    // setup handler for uncaught exception
    Thread.setDefaultUncaughtExceptionHandler(_unCaughtExceptionHandler);
}

}

之后,在活动的onCreate()方法中,在每个应用程序开始时实例化这个类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24557412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档