1

在极少数情况下,我在我的一个 AsyncTasks 中遇到了这个神秘的 RuntimeException。我有多个地方在我的应用程序中实现 AsyncTasks,但无论我如何深入研究这些错误,我似乎都无法获得有关为什么抛出此 RuntimeException 或它发生在哪个线程中的任何信息。基于“ completedAbruptly=true" 我猜异步任务中有一个未捕获的异常,但我什至不知道从哪里开始尝试找出......想法?谢谢!

在此处输入图像描述

4

2 回答 2

4

completedAbruptly=true当执行的任务抛出异常时发生。an 的任务AsyncTask是执行doInBackground方法。

我建议您将doInBackground代码包装到try/catch块中并让它打印发生的异常。

protected Void doInBackground(Void... params) {
    try {
        // ----------
        // do stuff
        return null;
        // ----------
    } catch (Throwable t) {
        Log.e("AsyncTask", "OMGCrash", t);
        // maybe throw it again
        throw new RuntimeException(t);
    }
}

这应该告诉你这一切发生的原因。

于 2012-09-14T18:20:28.070 回答
2

根据源代码completedAbruptly是线程由于用户交互而结束的标志。我猜想在异步任务完成之前完成活动时会发生异常。放弃这种可能性应该是微不足道的:只需用无限循环替换您的 AsyncTask 之一,然后在模拟器上按“返回”。

于 2012-09-14T17:58:16.897 回答