這是一個普遍的問題,它從特定的場景中長大,但我希望得到一個籠統的回答如何應對以下情況:如何防止由於後臺線程中的異常導致android應用程序崩潰?
背景:
我有一個應用程序,這是使用一些第三方庫(廣告網絡提供商SDK - 具體 - AdMob
SDK,基於Google Play Services
)。該庫的功能對於應用程序並不重要。該庫創建一個或多個後臺工作線程。有時(非常罕見的情況下)其中一個後臺線程中存在未處理的異常,導致應用程序崩潰。我想忽略由此庫引起的所有異常情況,無論其原因如何:最糟糕的情況是應用用戶看不到廣告 - 這比應用崩潰要好得多。
由於庫本身創建後臺線程 - 我不能只通過try/catch來包裝它們。
問題
有沒有辦法捕捉所有非處理的背景(非主)線程的例外,只是要殺死在這種情況下,螺紋,並防止應用程序崩潰?
相關問題
我看到了很多的幾個問題,但有些過於具體(而不是覆蓋我的情況),其他參考的情況時,開發商對線程創建一個控制,是能夠用try/catch包裹整個線程。如果我仍然錯過了相關的問題,我將很感激鏈接
您是否嘗試過安裝的處理程序工作線程,並儘量不要殺死進程?我不知道這是否可能,因爲您可能無法訪問正在崩潰的工作線程。我知道flurry設法爲整個過程安裝一個處理程序,並在應用程序崩潰之前傳輸錯誤報告。也許通過這條路線是可行的。 –
@over_optimistic謝謝!我嘗試使用Thread.setDefaultUncaughtExceptionHandler,它的作用就像一個魅力:)!請把這個寫成答案,我可以接受它 –
http://stackoverflow.com/questions/2764394/ideal-way-to-set-global-uncaught-exception-handler-in-android/ – fadden