1

キャッチされない例外がある場合、アプリを終了したい。そのために私は and を使用し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());
    }
}

しかし、このコードの問題は、終了メソッドを呼び出した後、アプリケーションが再び再起動することです (アプリのホーム アクティビティが開始されます)。例外が発生したら、アプリを再起動したくありません。この問題を解決するために、もう 1 つの方法を試しました。

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 メソッドを使用するか、すべてのアクティビティを終了して、アプリケーションを強制終了するにはどうすればよいですか?

4

0 に答える 0