Java 从ExceptionHandler子类安全退出应用程序?
我对Android和java都是新手,我会尽我所能做到尽可能具体 我有一个应用程序,它有一个活动、几个片段和类以及一个实现默认Java 从ExceptionHandler子类安全退出应用程序?,java,android,exception-handling,uncaughtexceptionhandler,system.exit,Java,Android,Exception Handling,Uncaughtexceptionhandler,System.exit,我对Android和java都是新手,我会尽我所能做到尽可能具体 我有一个应用程序,它有一个活动、几个片段和类以及一个实现默认UncaughtExceptionHandler的ExceptionHandler子类。我能够成功地使用:- Thread.setDefaultUncaughtExceptionHandler(新的ExceptionHandler(this)) 在出现未处理的异常时退出应用程序,而不显示“ForceClose”弹出窗口。我使用系统。退出(0)。我正在整个应用程序中记录日志
UncaughtExceptionHandler
的ExceptionHandler
子类。我能够成功地使用:-
Thread.setDefaultUncaughtExceptionHandler(新的ExceptionHandler(this))代码>
在出现未处理的异常时退出应用程序,而不显示“ForceClose”
弹出窗口。我使用系统。退出(0)
。我正在整个应用程序中记录日志。我能够将ExceptionHandler子类中的异常记录到日志中
现在,我的问题是,在出现未捕获异常的情况下,应用程序退出时不会经历onPause()
、onStop()
或onDestroy()
,但我需要它通过我的MainActivity
的所有生命周期
使用ExceptionHandler
子类退出应用程序时如何执行此操作?我最终得到了它,如果在启动的第一个活动(MainActivity)中抛出错误,则无法执行任何操作
如果它被抛出到任何其他活动中,那么在ExceptionHandler
类中,我们可以传递启动MainActivity的意图,然后退出应用程序。优雅地:P
public类ExceptionHandler实现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());
}
}
}