背景
我正在尝试捕获所有崩溃并允许用户通过电子邮件发送我自己的自定义错误报告。
这是一个非常临时的解决方案,因为我需要发送应用程序的日志和其他信息。它不打算发送给最终用户。只有极少数的测试人员。
这个怎么运作
无论如何,我创建了一个从 java.lang.Thread.UncaughtExceptionHandler 扩展的类,并且具有函数 uncaughtException() 。我使用 Thread.setDefaultUncaughtExceptionHandler() 向它注册,它确实捕获了崩溃。
该功能将一些数据存储在外部存储中,并立即打开电子邮件应用程序 (gmail) 以发送崩溃报告。
问题
它工作得很好,但由于某种原因,当我关闭电子邮件应用程序时,应用程序本身会重新启动。
我尝试了多种组合:
- System.exit(0)
- android.os.Process.killProcess(android.os.Process.myPid());
- 调用默认的 UncaughtExceptionHandler 。
没有工作。它确实关闭了应用程序,但一旦关闭电子邮件应用程序,应用程序就会自行重启
在捕获崩溃时,我也无法找到如何在 UI 线程上执行的操作(例如 toasts、dialogs、...)。
我尝试过的另一个解决方案是打开一个将发送崩溃报告的新活动。可悲的是,该应用程序甚至没有开始活动。
我尝试过的另一件事是从 ACRA 库中读取,试图弄清楚他们是如何处理崩溃的。可悲的是,我不明白那里发生了什么,即使从高层次上也是如此。
我在这里(在 SO 上)搜索了一个解决方案并找到了一些帖子,但没有一个对我有用。
问题
关闭电子邮件应用程序时如何避免应用程序重新启动?