バックグラウンド
私はすべてのクラッシュをキャプチャし、ユーザーが独自にカスタマイズしたエラー レポートを電子メールで送信できるようにしようとしています。
アプリのログやその他の情報を送信する必要があるため、これは非常に一時的な解決策です。エンド ユーザーに送信するためのものではありません。非常に小さなテスターのグループにすぎません。
使い方
とにかく、 java.lang.Thread.UncaughtExceptionHandler から拡張され、関数 uncaughtException() を持つクラスを作成しました。Thread.setDefaultUncaughtExceptionHandler() を使用して登録すると、実際にクラッシュがキャッチされます。
この関数は外部ストレージにデータを保存し、すぐにメール アプリ (gmail) を開いてクラッシュ レポートを送信します。
問題
それは非常にうまく機能しますが、何らかの理由で、メールアプリを閉じると、アプリ自体が再起動されます。
私は複数の組み合わせを試しました:
- システム終了(0)
- android.os.Process.killProcess(android.os.Process.myPid());
- デフォルトの UncaughtExceptionHandler を呼び出します。
どれも機能しませんでした。アプリは閉じますが、メールアプリを閉じるとすぐにアプリが再起動します
また、クラッシュ (トースト、ダイアログなど) をキャプチャするときに UI スレッドで機能することを行う方法もわかりません。
私が試した別の解決策は、クラッシュ レポートを送信する新しいアクティビティを開くことです。悲しいことに、アプリはアクティビティを開始しませんでした。
私が試したもう 1 つのことは、ACRA ライブラリから読み取り、クラッシュをどのように処理したかを把握しようとすることです。悲しいことに、私はそこで何が起こっているのか理解できませんでした。
私はここ(SOで)で解決策を検索し、いくつかの投稿を見つけましたが、どれもうまくいきませんでした。
質問
メール アプリを閉じたときにアプリが再起動しないようにするにはどうすればよいですか?