アプリケーションの 1 つがユーザー デバイスでクラッシュしたときに通知を受ける方法はありますか?
Java Swing 開発者として、カスタム イベント キューを定義して、アプリケーションで発生するすべてのキャッチされない例外をトラップすることが非常に役立つことを発見しました。正確には、例外がトラップされると、アプリケーションは例外トレース (アプリケーションの信頼性を高めるための強制終了情報) を含む電子メールをサポート チームに送信します。私が使用するコードは次のとおりです。
EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.push(new EventQueue() {
@Override
protected void dispatchEvent(AWTEvent event) {
try {
super.dispatchEvent(event);
} catch (Throwable t) {
processException(t); // Basically, that method send the email ...
}
}
Android アプリで同じことを行う方法を探しましたが、本当に効率的なものは見つかりませんでした。これが私の最後の試みです:
import java.lang.Thread.UncaughtExceptionHandler;
import android.util.Log;
public class ErrorCatcher implements UncaughtExceptionHandler {
private static UncaughtExceptionHandler handler;
public static void install() {
final UncaughtExceptionHandler handler = Thread.currentThread().getUncaughtExceptionHandler();
if (handler instanceof ErrorCatcher) return;
Thread.currentThread().setUncaughtExceptionHandler(new ErrorCatcher());
}
public void uncaughtException(Thread thread, Throwable t) {
processException(t);
handler.uncaughtException(thread, ex);
}
}
これは、アプリケーションが終了せず、ユーザーを非常に混乱させる「ゾンビ」状態のままになるため、効率的ではありません。
解決策はありますか?