2017-04-21 52 views
0

我目前有一個應用程序,如果用戶已多次崩潰,將啓動一個不同的活動。但是,由於後臺服務/推送服務,該應用程序仍然可能會在此備用活動中崩潰。是否有可能防止或重新啓動未捕獲的異常時主線程

有沒有辦法阻止主線程死亡並仍然保留其消息隊列。我正在使用Thread.setDefaultUncaughtExceptionHandler()併吞下異常,但似乎線程仍凍結或終止。我嘗試thread.start()但後來發佈到MessageQueue的所有UI事件不再有效(視圖被凍結)

+2

不行,修復你的代碼 – Selvin

+1

是,解決您的代碼 – TripeHound

+0

嘗試將整個代碼try塊內。但是我警告你,這不是一個好習慣。 –

回答

0

我不認爲Thread.start()在這種情況下足夠了。如果我理解了這個問題,那麼在未捕獲的異常處理程序之後,您將無法處理未捕獲的異常。我認爲最好的辦法是在另一個過程中開始你的「不同的活動」。 Here is explained how to do that

我已經從該答案複製了一些來源。你首先準備待定的意圖。

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); 
相關問題