我正在尝试捕获所有崩溃,并允许用户通过电子邮件发送我自己的自定义错误报告。
这是一个非常临时的解决方案,因为我需要发送应用程序的日志和其他信息。它不打算发送给最终用户。只有极少数的测试人员。
无论如何,我已经创建了一个从java.lang.Thread.UncaughtExceptionHandler扩展的类,它有一个函数uncaughtException()。我使用Thread.setDefaultUncaughtExceptionHandler()注册它,它确实捕获崩溃。
该函数将一些数据存储在外部存储上,并立即打开电子邮件应用程序(gmail)以发送崩溃报告。
效果很好,但出于某种原因,当我关闭电子邮件应用时,应用程序本身会重新启动。
我尝试了多种组合:
没有用。它会关闭应用程序,但只要关闭电子邮件应用程序,应用程序就会自动重启
我也无法找到在捕获崩溃时如何处理UI线程上的事情(例如toast,dialogs,......)。
我尝试过的另一个解决方案是打开一个发送崩溃报告的新活动。遗憾的是,应用程序甚至没有开始活动。
我尝试过的另一件事是从ACRA库中读取,试图弄清楚他们是如何处理崩溃的。可悲的是,即使是从很高的层面来看,我也不明白那里发生了什么。
我在这里(在SO上)搜索了一个解决方案并发现了一些帖子,但没有一个对我有效。
关闭电子邮件应用时如何避免重启应用?
答案 0 :(得分:2)
在阅读了你的问题后,我想我会给崩溃报告一个回事。
以下是我的结果:https://github.com/slightfoot/android-crash-reporting
它拥有你想要的一切,甚至可能更多。