如果有未捕获的异常,如何退出我的应用程序?

时间:2013-07-08 13:57:25

标签: android activity-finish uncaught-exception uncaughtexceptionhandler

如果有未捕获的异常,我想退出我的应用。为此,我使用System.exit(10)Process.killProcess(我知道调用这些方法不是一个好习惯)。我的代码如下:

public class UncaughtExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
    String Tag;
    Context myContext;
    public UncaughtExceptionHandler(Context context, String TAG) {
        Tag = TAG;
        myContext = context;
    }  

    public void uncaughtException(Thread thread, Throwable exception) {
        StringWriter sw = new StringWriter();
        exception.printStackTrace(new PrintWriter(sw));
        Logger.appendErrorLog(sw.toString(), Tag);
        System.exit(10);
        Process.killProcess(Process.myPid());
    }
}

但是这个代码的问题是,在调用exit方法之后,我的应用程序再次重启(app的Home活动启动)。一旦出现异常,我不希望我的应用再次启动。为了解决这个问题,我尝试了另一种方法:

public class UncaughtExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
    String Tag;
    Context myContext;
    public UncaughtExceptionHandler(Context context, String TAG) {
        Tag = TAG;
        myContext = context;
    }  

    public void uncaughtException(Thread thread, Throwable exception) {
        StringWriter sw = new StringWriter();
        exception.printStackTrace(new PrintWriter(sw));
        Logger.appendErrorLog(sw.toString(), Tag);
        Intent intent = new Intent(myContext, HomeActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("EXIT", true);
        myContext.startActivity(intent);
    }
}

在此之后我在HomeActivity打电话给我。运行此代码后,我的应用程序根本没有退出,我得到一个黑屏

如何使用exit方法或完成所有活动来终止应用程序?

0 个答案:

没有答案