2013-02-27 56 views
2

我是相對於stackoverflow新。uncaughtException被稱爲多個時間

我在我的android應用程序中實現了一個owne uncaughtException處理程序。 問題是,當我的一個活動中發生一個unhandeld異常時,方法「uncaughtException」被調用多次。

這裏是我的全班負責一個未捕獲的錯誤時拋出的處理:

public class CustomUncaughtExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler { 

private UncaughtExceptionHandler defaultUEH; 
public CustomUncaughtExceptionHandler(UncaughtExceptionHandler defaultHandler) { 

    defaultUEH = defaultHandler; 
    Log.w("cmhandler","setted default UEH"); 
} 

public void uncaughtException(Thread thread, Throwable exception) { 
    Log.w("cmhandler","uncaughtException"); 
    Helper.Log_e("CustomUncaughtExceptionHandler", "uncaughtException", exception); 

    defaultUEH.uncaughtException(thread, exception); 
} 

}

Helper.Log_e("CustomUncaughtExceptionHandler", "uncaughtException", exception);只保存在一個文件中的例外,而且在沒有拋出異常。

我實現了類在我的活動是這樣的:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Thread.setDefaultUncaughtExceptionHandler(new CustomUncaughtExceptionHandler(Thread.getDefaultUncaughtExceptionHandler())); 

當我運行我的應用程序,並在活動的OnCreate插入類似的東西(上面的代碼之後)

String i = null; 
    i.length(); 

異常情況正確,並且彈出FC對話框。到目前爲止這麼好,但在查看我的日誌後,我發現uncaughtException方法被多次調用。

編輯:通常該方法被調用2-6次,並且來自defaultUEH設置的日誌僅在日誌中出現一次。

還有其他人有這樣的行爲呢?或者有沒有人對我的錯誤提示?

謝謝 最好的問候schw4ndi

回答

0

我的錯誤是我設置好的默認Exceptino處理程序在OnCreate evrey活動,所以通過調用getDefaultExceptionHandler我得到的previos設置好的customExceptionHandler。

我現在通過將這個類改爲singelton來解決它。所以默認處理程序只被設置一次。