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