1

我在我的 android 应用程序中使用ACRA 。它非常有用,但有时很无聊。

有时,有几个异步任务在后台运行。而对于赛季,他们都失败了(例如无法连接到互联网)。ACRA 会反复显示 toast 信息,并拒绝退出。

是否能够让 ACRA 捕获第一个异常?还是只显示一次 toast 消息?


更新

添加演示:https ://github.com/freewind/android-acra-multi-reports

本项目有4项活动。最后一个会抛出异常,之前的每个活动都会抛出异常onActivityResult。可以看到 ACRA 在退出前会多次报告。

4

1 回答 1

3

在我看来,这听起来像是您实际上应该捕获一些异常,并且不要让所有异常都冒出来。

ACRAThread.UncaughtExceptionHandler在主线程上注册 a。在这里,所有未捕获的异常(正如处理程序的名称所暗示的)都得到处理。通常这意味着应用程序即将崩溃,ACRA 将发挥它的报告魔力。ACRA 本身使用多个线程来完成它的工作,并会等到一切都完成后才真正终止应用程序的进程。所以我猜如果出现很多异常,ACRA 只是忙于处理它们,以至于它不会达到会终止进程的地步。

您可以注册自己的实现UncaughtExceptionHandler来捕获异常并决定何时将它们交给 ACRA 以及何时执行其他操作。如果我没记错的话,ACRA 会调用UncaughtExceptionHandler在 ACRA 初始化之前已经注册的那个。所以你也可以尝试链接这些处理程序。

于 2012-11-24T16:02:04.200 回答