如果抛出许多异常,ACRA 会让它变得无聊



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

有时,后台运行多个异步任务。对于季节,所有这些都失败了(例如无法连接到互联网)。ACRA会一遍又一遍地显示祝酒词,并拒绝退出。

它能够让ACRA只捕获第一个异常吗?或者只显示一次祝酒词?


更新

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

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

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

ACRA 在主线程上注册一个Thread.UncaughtExceptionHandler。在这里,所有未捕获的异常(如处理程序的名称所示)都会被处理。通常这意味着应用程序即将崩溃,ACRA将发挥其报告魔力。ACRA 本身使用多个线程来完成其工作,并且会等到所有操作完成后再实际终止应用程序的进程。所以我猜想,如果出现很多异常,ACRA只是忙于处理它们,以至于如果它会杀死进程,它就不会达到目的。

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

相关内容

最新更新