2017-04-07 10 views
0

私は、いくつかの非同期がSQLiteで不適切な順序で物事をしていることが原因で発生したクラッシュケースが悪かったため、爆発しました。すべてのデバッグに時間がかかり、内部のDBへのアクセスが非常に助けになったでしょう。私はdevデバイス上のその内部DBにアクセスする方法を知っているが、何かがうまくいかない場合は、デバイスに関係なくそのdbのインスタンスを取得できるようにしたい。エラー報告のために、私はCrashlyticsを使用しています。Android - Crashlytics、クラッシュ中にコードを実行

質問は次のとおりです。クラッシュコレクション/レポート中にCrashixがコード(メソッドなど)を実行する方法はありますか? (たとえば、dbコピーを取得して電子メールなど)

ドキュメントに何かが見つかりませんでした。

答えて

2

Crashlyticsがクラッシュする前に制御を取得することは可能です。基本的に、独自のキャッチされていない例外ハンドラを作成し、そこからCrashlyticsのハンドラを呼び出す必要があります。あなたのアプリケーションクラスでこのようなもの:

private UncaughtExceptionHandler originalUncaughtHandler; 

@Override 
public void onCreate() { 
    // initialize Fabric with Crashlytics 

    originalUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler(); 
    Thread.setDefaultUncaughtExceptionHandler(this); 

    // do the rest of your oncreate stuff 
} 

@Override 
public void uncaughtException(Thread thread, Throwable ex) { 
    // do your work to add data to Crashlytics log 

    originalUncaughtHandler.uncaughtException(thread, ex); 
} 
+0

ここで2つの他の答えを組み合わせると、私はこのようなことをしなければならないと恐れていました。簡単な方法を望んでいた。誰かがエラーログツールを使用して開始する理由は、キャッチされていない例外を調べないことです。それはよく捕らえられない例外です。答えをつけていただきありがとうございました。 (Crashlytics devsに...より多くの人々へのパワー!!!:P) – MadDim

0

できません。ただし、クラッシュサイクラを開始する前に特定の値を設定することはできます。ユーザーを識別するためにパラメータに値を追加する。 crashlyticsセッションを作成する前にユーザーの電子メールIDを追加する。

0

@のBasuさん - シンは、あなたが、クラッシュにコンテキストを追加https://docs.fabric.io/android/crashlytics/enhanced-reports.html

を参照するか、またはあなた自身のたuncaughtExceptionHandlerを使用して、Crashlyticsを呼び出すことができ、言ったように。あなたのコードは特別な安全性が必要ですが!

関連する問題