2017-04-07 85 views
0

我有一個不好的崩潰情況是由於一些Asyncs在SQLite中以不正確的順序做東西而引起的,事情發生了。我花了一些時間來調試所有這些,並且訪問內部數據庫會非常有幫助。我知道如何訪問dev設備上的內部數據庫,但如果出現問題,我希望能夠獲得該數據庫的實例,而不管設備。對於錯誤報告,我正在使用Crashlytics。Android - Crashlytics,在崩潰期間運行代碼

問題是:有沒有辦法讓Crashlytics在崩潰收集/報告期間運行一段代碼(方法等)? (例如,獲取數據庫副本,併發送電子郵件,或其他)

在文檔中找不到。

回答

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

結合這裏的另外兩個答案,我害怕我必須做這樣的事情。希望簡單的出路。有人使用錯誤記錄工具開始的原因是不要深入瞭解未捕獲的異常。很好的未捕獲的異常。謝謝你的回答,以及如何設置它的「偷看」。 (致Crashlytics開發者...更多的力量給人!!!:P) – MadDim

0

不,你不能。但是,您可以在啓動Crashlytics之前設置某些值。就像爲參數添加值以識別用戶一樣。就像在創建crashlytics會話之前添加用戶的電子郵件ID一樣。