0

我目前有一个应用程序,如果用户多次崩溃,它会启动不同的 Activity。但是,由于后台服务/推送服务,应用程序仍可能在此备用活动中崩溃。

有没有办法防止主线程死亡并仍然保留其消息队列。我正在使用Thread.setDefaultUncaughtExceptionHandler()并吞下异常,但似乎线程仍然冻结或终止。我试过thread.start()了,但是所有发布到 MessageQueue 的 UI 事件都不再起作用(视图被冻结)

4

1 回答 1

0

在这种情况下,我认为 Thread.start() 是不够的。如果我理解了这个问题,那么在未捕获的异常处理程序之后,您将无法再处理未捕获的异常。我认为最好的方法是在另一个过程中开始你的“不同的活动”。这里解释了如何做到这一点

我已经从那个答案中复制了一些来源。您首先准备待处理的意图。

intent = PendingIntent.getActivity(/*Applcation context*/, 0,
        /*Intent to 'different activity'*/, /*flags*/);

然后在未捕获的异常处理程序中设置警报管理器,比如说 2 秒。

AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
于 2017-04-21T09:43:38.223 回答