1

Android アプリケーションでACRAを使用しています。非常に便利ですが、退屈な場合もあります。

バックグラウンドで複数の非同期タスクが実行されている場合があります。そしてシーズン中、それらはすべて失敗しました(たとえば、インターネットに接続できません)。ACRA はトースト メッセージを何度も表示し、終了を拒否します。

ACRA に最初の例外をキャッチさせることはできますか? または、トースト メッセージを 1 回だけ表示しますか?


アップデート

デモを追加: https://github.com/freewind/android-acra-multi-reports

このプロジェクトには 4 つのアクティビティがあります。最後のアクティビティは例外をスローし、前の各アクティビティは例外をスローしonActivityResultます。ACRA が終了する前に何度も報告することがわかります。

4

1 に答える 1

3

それは、実際にいくつかの例外をキャッチし、それらすべてをバブルさせないようにする必要があるように私には聞こえます。

ACRAThread.UncaughtExceptionHandlerはメインスレッドにを登録します。ここで、(ハンドラーの名前が示すように)キャッチされなかったすべての例外が処理されます。通常、これは、アプリケーションがクラッシュしそうになり、ACRAがレポートの魔法を実行することを意味します。ACRAは、いくつかのスレッド自体を使用して作業を行い、すべてが終了するまで待機してから、実際にアプリケーションのプロセスを強制終了します。したがって、多くの例外が発生する場合、ACRAはそれらを処理するのに非常に忙しいので、プロセスを強制終了することになりません。

例外をキャッチするための独自の実装を登録し、UncaughtExceptionHandlerそれらをいつACRAに渡すか、いつ他のことを行うかを決定できます。私が間違っていなければ、ACRAはUncaughtExceptionHandlerACRAの初期化の前に登録されたに電話をかけます。したがって、これらのハンドラーをチェーンすることもできます。

于 2012-11-24T16:02:04.200 に答える