1

我是 Android 和 java 的新手,我会尽力做到尽可能具体。

我有一个应用程序,其中包含一个活动和几个片段和类以及一个ExceptionHandler实现 default的子类UncaughtExceptionHandler。我能够成功使用:-

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));

在未处理的异常情况下退出应用程序而不显示"ForceClose"弹出窗口。我用System.exit(0). 我正在整个应用程序中记录日志。我能够将 ExceptionHandler 子类的异常记录到日志中。

现在,我的问题是应用程序在没有经历的情况下退出onPause()onStop()或者onDestroy()在未捕获的异常的情况下,但我需要它为我的MainActivity.

使用子类退出应用程序时如何执行此操作ExceptionHandler

4

1 回答 1

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());

    }
}

}

于 2014-02-04T11:35:42.527 回答