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