Android异步任务引发神秘的运行时异常
在极少数情况下,我会在一个异步任务中遇到这种神秘的运行时异常。我在我的应用程序中有多个地方实现了异步任务,但无论我多么深入地研究这些错误,我似乎都无法获得有关引发此RuntimeException的原因或它发生在哪个线程中的任何信息。根据“completedjustly=true”,我猜测异步任务中存在未捕获的异常,但我甚至不知道从何处开始尝试找出。。。思想?谢谢Android异步任务引发神秘的运行时异常,android,Android,在极少数情况下,我会在一个异步任务中遇到这种神秘的运行时异常。我在我的应用程序中有多个地方实现了异步任务,但无论我多么深入地研究这些错误,我似乎都无法获得有关引发此RuntimeException的原因或它发生在哪个线程中的任何信息。根据“completedjustly=true”,我猜测异步任务中存在未捕获的异常,但我甚至不知道从何处开始尝试找出。。。思想?谢谢 根据,由于用户交互,突然完成是线程结束的标志。我猜在异步任务完成之前完成活动时会发生异常。放弃这种可能性应该很简单:只需将一个异步任
根据,由于用户交互,
突然完成
是线程结束的标志。我猜在异步任务完成之前完成活动时会发生异常。放弃这种可能性应该很简单:只需将一个异步任务替换为无限循环,然后在仿真器上按“后退”。根据,突然完成
表示线程由于用户交互而完成。我猜在异步任务完成之前完成活动时会发生异常。放弃这种可能性应该很简单:只需将一个异步任务替换为无限循环,然后在仿真器上按“上一步”。completedjustly=true
在执行的任务引发异常时发生。而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);
}
}
这应该会向您显示所有这些发生的原因。completedAbruptly=true在执行的任务引发异常时发生。而
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);
}
}
这应该会告诉你发生这一切的原因。似乎你的
doInBackground
方法之一抛出了RuntimeException
。似乎你的doInBackground
方法之一抛出了RuntimeException
。嗯,非常有用,但我在应用程序中只有一个活动。。。未完成任何活动。此外,在崩溃发生的30秒左右的时间里,我甚至没有触摸屏幕或与设备进行任何交互,所以我不确定是什么“用户交互”触发了这一点。。。嗯…嗯,非常有帮助,但我在应用程序中只有一个活动。。。未完成任何活动。此外,在崩溃发生的30秒左右的时间里,我甚至没有触摸屏幕或与设备进行任何交互,所以我不确定是什么“用户交互”触发了这一点。。。嗯……有趣;我已经用泛型catch(异常e)进行了try/catch,但是异常e似乎不在Throwable t所涵盖的范围内。换句话说,我假设这两种方法在处理一般崩溃案例时是等效的。Throwable
涵盖了Exception
和Error
。得到一个错误
是相当罕见的,但仍然是可能的;我已经用泛型catch(异常e)进行了try/catch,但是异常e似乎不在Throwable t所涵盖的范围内。换句话说,我假设这两种方法在处理一般崩溃案例时是等效的。Throwable
涵盖了Exception
和Error
。获得错误
的情况相当罕见,但仍然有可能。