私は独自の例外 (MyException) を作成し、ロギングを実装し、トーストの形式でエラー メッセージを表示しました。これがその短編です...
public class MyException extends Exception {
public MyException(String msg) {
Looper.prepare();
Toast.makeText(Controller.getInstance().getApplicationContext(), msg , Toast.LENGTH_LONG).show();
//Looper.loop();
Looper.myLooper().quit();
}
}
例外がスローされてキャッチされるスレッドを実装するまでは、すべて問題ありませんでした。
私が Looper クラスで遊んでいたことは、おそらくすでにご覧になっていると思いますが、正直なところ、私はそれを機能させる方法を知りません。それは正しいアプローチですか?また、コントローラーに ApplicationContext の参照が既に格納されていることもわかります。ActivityContext でもそれを行い、この ActivityContext から Toast を作成しますか? (しかし、これはパフォーマンスの面で良い習慣ではないと聞きました)
アップデート
例外がアクティビティのスレッドでキャッチされている場合、これは私が行くべき方法ですか?
private Runnable exceptionCatchingThread = new Runnable() {
@Override
public void run() {
try {
throw new Exception();
} catch (Exception e) {
this.e = e;
runOnUiThread(handleThreadExceptions); }
}
}
private Runnable handleThreadExceptions = new Runnable() {
@Override
public void run() {
//Show toast or call the general ExceptionHandler,
//which is doing logging and stuff
Helper.handleException(e);
}
}