我在我的Android应用程序中使用ACRA。它非常有用但有时很无聊。
有时,有几个异步任务在后台运行。而对于季节,所有这些都失败了(例如无法连接到互联网)。 ACRA将一次又一次地显示吐司消息,并拒绝退出。
是否能够让ACRA抓住第一个例外?或者只显示一次吐司消息?
更新
添加演示:https://github.com/freewind/android-acra-multi-reports
此项目共有4项活动。最后一个将抛出异常,之前的每个活动都会在onActivityResult
中抛出异常。您可以在退出前看到ACRA报告多次。
答案 0 :(得分:3)
听起来我觉得你应该抓住一些例外,并且不要让所有的例外都冒出来。
ACRA在主线程上注册Thread.UncaughtExceptionHandler
。这里所有未被捕获的异常(如处理程序的名称所示)都会得到处理。通常这意味着应用程序即将崩溃,ACRA将执行其报告魔术。 ACRA使用多个线程来完成其工作,并且在实际杀死应用程序的过程之前等待所有内容完成。所以我猜想如果有很多例外情况,ACRA就会非常忙于处理它们,以至于它不会破坏这个过程。
您可以注册自己的UncaughtExceptionHandler
实施,以捕捉异常并决定何时将其交给ACRA以及何时做其他事情。如果我没弄错的话,ACRA会打电话给ACRA初始登记前已注册的UncaughtExceptionHandler
。所以你也可以尝试将这些处理程序链接起来。