当我们的某个应用程序在用户设备上崩溃时,是否有办法通知?
作为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);
}
}
这样做效率不高,因为应用程序不再退出并保持“僵尸”状态,对用户来说非常混乱。
你有解决方案吗?