我有一个像这样的全局excpetion处理程序的应用程序:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
}
}
我想避免向用户显示力量,并向用户展示友好的祝酒词,例如"出了点问题......"。 这是异常处理程序类:
public class ExceptionHandler implements
Thread.UncaughtExceptionHandler {
private final Context myContext;
private final String LINE_SEPARATOR = "\n";
public ExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
StringBuilder errorReport = new StringBuilder();
errorReport.append("************ CAUSE OF ERROR ************\n\n");
errorReport.append(stackTrace.toString());
Log.e("ERROR_TAG", errorReport.toString());
Utils.showShortToast(R.string.something_went_wrong, myContext);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);
}
},1000);
}
}
问题在于显示toast,应用程序冻结并等到system.exit()被调用然后应用程序退出。正如它在下面的引用问题中所注意到的那样,在显示toast后立即调用exit()会导致进程终止并且不会显示toast。
答案 0 :(得分:-1)
在onDestroy()中制作吐司。我认为这是好方法:)。
最佳regar