3
我正在嘗試設置一個全局異常處理服務,如this answer中所述。這種方法聽起來很合邏輯,因爲崩潰後,我的自定義Thread.UncaughtExceptionHandler
中的代碼可能無法成功執行,這可能是因爲應用程序可能不處於穩定狀態,或者因爲可能沒有足夠的時間讓操作系統終止進程。從Thread.UncaughtExceptionHandler啓動服務?
不幸的是,這種方法似乎不起作用,因爲服務在相同的進程中啓動,所以它也被殺死。我如何從處理程序的uncaughtException()
開始服務?我可以強制服務在完全獨立的過程中啓動嗎?
我設置我的定製默認(VM級)的異常處理程序在Application
這樣的:
public class MyApp extends Application {
@Override
public void onCreate() {
Thread.setDefaultUncaughtExceptionHandler(
MyExceptionReporter.getInstance(this));
...
在我的自定義處理程序,我推出這樣的服務:
final Intent i = new Intent(MyExceptionService.INTENT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(MyExceptionService.EXTRA_STACK_TRACE,
Log.getStackTraceString(ex));
mContext.startService(i);
該服務在AndroidMaifest.xml
文件中被拒絕,並在應用程序的其他位置啓動罰款。
你先生剛剛救了我的命 – javorosas