当我们的一个应用程序在用户设备上崩溃时,是否有办法得到通知?
作为一名 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);
}
}
这效率不高,因为应用程序不再退出并停留在“僵尸”状态,这让用户非常困惑。
你有解决方案吗 ?