我是Android和java的新手,我会尽力做到尽可能具体。
我有一个应用程序,其中包含一个活动,多个片段和类以及一个实现默认ExceptionHandler
的{{1}}子类。我成功地使用了: -
UncaughtExceptionHandler
在未处理异常的情况下退出应用程序而不显示Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
弹出窗口。我使用"ForceClose"
。我正在通过应用程序记录日志。我能够将ExceptionHandler子类中的异常记录到日志中。
现在,我的问题是,如果发生未被捕获的异常,应用程序会退出而不会经历System.exit(0)
,onPause()
或onStop()
,但是我需要它来通过我所有这些生命周期onDestroy()
。
如何使用MainActivity
子类退出应用程序时执行此操作?
答案 0 :(得分:0)
我终于明白了,如果在第一个活动(MainActivity)中抛出了错误,那么就无法完成任何工作。
如果它被抛入任何其他活动,那么在ExceptionHandler
类中我们可以传递意图来启动MainActivity然后退出应用程序。优雅地:P
public class ExceptionHandler implements UncaughtExceptionHandler{
private Activity myContext;
public ExceptionHandler(Activity context) {
this.myContext = context;
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// TODO Auto-generated method stub
StringWriter stackTrace = new StringWriter();
ex.printStackTrace(new PrintWriter(stackTrace));
String report = stackTrace.toString();
if(myContext instanceof MainActivity){
System.gc();
android.os.Process.killProcess(android.os.Process.myPid());
}else{
Intent intent = new Intent(myContext, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
myContext.startActivity(intent);
System.gc();
android.os.Process.killProcess(android.os.Process.myPid());
}
}
}