【问题标题】:sending crash report via email using DefaultExceptionHandler使用 DefaultExceptionHandler 通过电子邮件发送崩溃报告
【发布时间】: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


    【解决方案1】:

    在阅读了您的问题后,我想我应该尝试一下崩溃报告。

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

    它有你想要的一切,而且可能更多。

    【讨论】:

    • 效果很好。但是,我仍然不明白为什么我每次离开 gmail 时都会进入一个重新启动应用程序的循环。该示例甚至可以毫无问题地显示progressDialog。我现在不知道为什么我的应用程序有问题。 :(
    • 实际上,我可以看到图书馆也有同样的问题。只是它不会在 onCreate 上崩溃,而是在单击按钮时崩溃。他们没有修复它,只是避免了它。现在的问题是,这怎么可能。如果我在 onCreate() 方法上设置崩溃,我可以看到应用程序将重新启动。
    • 有史以来最好的答案 :) 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多