sto*_*fln 2 android exception-handling
我为未处理的异常添加了一个异常处理程序,以了解应用程序在下一个应用程序启动时崩溃:
@Override
public void uncaughtException(Thread thread, Throwable ex) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = preferences.edit();
editor.putString("crashed", "yes");
editor.commit();
}
Run Code Online (Sandbox Code Playgroud)
我通过以下方式添加了处理程序:
Thread.setDefaultUncaughtExceptionHandler(this);
Run Code Online (Sandbox Code Playgroud)
现在的问题是:由于我添加了处理程序,应用程序在出错时的行为有所不同:
在我添加处理程序之前,我收到一个弹出窗口,告诉我应用程序崩溃了。
现在,在添加处理程序后,应用程序就冻结了,过了一会儿 android 向我显示了一个弹出窗口,告诉我该应用程序不再响应以及我是否想再等。这不是好的 IMO。任何提示,如何在应用程序崩溃后正确退出?
您可以保存原始异常处理程序,以便在对未处理的异常执行您自己的自定义操作后可以调用它。像这样:
//Inside UncaughtExceptionHandler.java:
…
private UncaughtExceptionHandler defaultUEH;
public DefaultExceptionHandler()
{
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread t, Throwable e)
{
//do anything you wish about the Throwable e :getStackTrace(),getCause(),getClass()...
//call the original uncaught exception handler:
defaultUEH.uncaughtException(t, e);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1420 次 |
| 最近记录: |