を使用してアプリケーションを拡張するクラスでカスタム例外ハンドラーを作成し、Thread.setDefaultUncaughtExceptionHandler
キャッチされなかった例外のスタック トレースをファイルに出力しました。デフォルトの「残念ながら、[アプリケーション] が停止しました」というメッセージではなく、カスタム エラー ポップアップをユーザーに表示したいと思います。
次のメソッドは、クリックするとメイン メニューに戻る AlertDialog を作成します。バックグラウンド スレッドでも実行できます。
void alert(final String msg) {
final Activity activity = (Activity) getContext();
activity.runOnUiThread(new Runnable() {
public void run() {
new AlertDialog.Builder(activity)
.setCancelable(false)
.setMessage(msg)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
activity.startActivity(new Intent(activity, MainMenu.class));
}
})
.show();
}
});
}
ただし、AlertDialog では、現在のアクティビティがわかっている必要があります。このメソッドを例外ハンドラーで使用するには、各アクティビティのonResume()
メソッドでリセットされる現在のアクティビティへのポインターを Application クラスに保持できますが、メモリ リークが心配です。
キャッチされていない例外がスローされたときに AlertDialog を表示する好ましい方法は何ですか?