2017-08-14 10 views
4

私のアプリでキャッチされていない例外ごとにfirebaseのクラッシュレポートを送信したいのですが、Androidシステムで「App has stopped responding」ダイアログが表示されます。これについてどうすればいいですか? firebaseクラッシュレポートを送信するUncaughtExceptionハンドラがすでにあります。私の問題は、Androidが残りのプロセスを処理できるようにすることです。キャッチされない例外を処理してから処理をシステムに委譲するにはどうすればよいですか?

答えて

1

キャッチされていない例外は、古い例外ハンドラを格納し、キャッチされていない例外を渡すことによってシステムに戻すことができます。

まず以下のようにApplicationクラスを作成する:

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. 
      } 
     }); 
    } 

} 

を次にようにマニフェストにアプリケーションとしてこのクラスを使用する:

<application 
    android:name=".Controller" 
    ... /> 
関連する問題