使用DefaultExceptionHandler通过电子邮件发送崩溃报告

时间:2013-07-07 12:56:25

标签: android crash-reports application-restart

背景

我正在尝试捕获所有崩溃,并允许用户通过电子邮件发送我自己的自定义错误报告。

这是一个非常临时的解决方案,因为我需要发送应用程序的日志和其他信息。它不打算发送给最终用户。只有极少数的测试人员。

如何运作

无论如何,我已经创建了一个从java.lang.Thread.UncaughtExceptionHandler扩展的类,它有一个函数uncaughtException()。我使用Thread.setDefaultUncaughtExceptionHandler()注册它,它确实捕获崩溃。

该函数将一些数据存储在外部存储上,并立即打开电子邮件应用程序(gmail)以发送崩溃报告。

问题

效果很好,但出于某种原因,当我关闭电子邮件应用时,应用程序本身会重新启动。

我尝试了多种组合:

  • System.exit(0)
  • android.os.Process.killProcess(android.os.Process.myPid());
  • 调用默认的UncaughtExceptionHandler。

没有用。它会关闭应用程序,但只要关闭电子邮件应用程序,应用程序就会自动重启

我也无法找到在捕获崩溃时如何处理UI线程上的事情(例如toast,dialogs,......)。

我尝试过的另一个解决方案是打开一个发送崩溃报告的新活动。遗憾的是,应用程序甚至没有开始活动。

我尝试过的另一件事是从ACRA库中读取,试图弄清楚他们是如何处理崩溃的。可悲的是,即使是从很高的层面来看,我也不明白那里发生了什么。

我在这里(在SO上)搜索了一个解决方案并发现了一些帖子,但没有一个对我有效。

问题

关闭电子邮件应用时如何避免重启应用?

1 个答案:

答案 0 :(得分:2)

在阅读了你的问题后,我想我会给崩溃报告一个回事。

以下是我的结果:https://github.com/slightfoot/android-crash-reporting

它拥有你想要的一切,甚至可能更多。