このコードを使用して、アプリケーションがクラッシュする可能性のあるキャッチされない例外を処理しています。
public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
public ExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
Toast.makeText(myContext,
"The application has crashed, and a report is sent to the admin",
Toast.LENGTH_SHORT).show();
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);// You can use LogCat too
Intent intent = new Intent(myContext, CrashActivity.class);
myContext.startActivity(intent);
Process.killProcess(Process.myPid());
System.exit(10);
}
}
既知であるがキャッチされていない例外(テストのため)で実行すると、アクティビティ「CrashActivity」が呼び出されますが、トーストは表示されません。
実際、Toastのみを表示してから、myContext.finish();を呼び出したいと思いました。CrashActivityに行く代わりに。しかし、そのトーストは見えません。
私はどこが間違っていますか?