2017-08-14 75 views
4

我想爲我的應用程序中的每個未捕獲異常發送firebase崩潰報告,但我也希望Android系統顯示「應用程序已停止響應」對話框。我該如何解決這個問題?我已經有一個發送Firebase崩潰報告的UncaughtException處理程序。我現在的問題是讓Android處理其餘的過程。如何處理未捕獲的異常,然後將處理委託給系統?

回答

1

未捕獲的異常可以通過存儲舊的異常處理程序並將未捕獲的異常傳遞給系統來委託給系統。

首先創建如下面的Application類:

<application 
    android:name=".Controller" 
    ... /> 

public class Controller extends Application { 

    private static Thread.UncaughtExceptionHandler defaultHandler; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     if (defaultHandler == null) { 
      defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); 
     } 
     Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { 
      @Override 
      public void uncaughtException(Thread t, Throwable e) { 
       FirebaseCrash.report(e); //or whatever 
       defaultHandler.uncaughtException(t, e); //this will show crash dialog. 
      } 
     }); 
    } 

} 

然後在表現爲使用這個類作爲應用