1

私はJavaだけでなくAndroidも初めてです。できるだけ具体的になるように最善を尽くします。

ExceptionHandlerdefault を実装するサブクラスとともに、1 つのアクティビティと複数のフラグメントとクラスを持つアプリがあります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 に答える