如果文档说它应该调用,为什么取消AsyncTask
仍然调用。这是一个长期存在的错误吗?onPostExecute
onCancelled
在我的情况下,它cancel(true)
是异步任务,它完成doInBackground
然后调用 onPostExecutes。最后它抛出一个
java.lang.InterruptedException
如果这是有意的行为,我可以把它Exception
作为一个对象吗?
如果文档说它应该调用,为什么取消AsyncTask
仍然调用。这是一个长期存在的错误吗?onPostExecute
onCancelled
在我的情况下,它cancel(true)
是异步任务,它完成doInBackground
然后调用 onPostExecutes。最后它抛出一个
java.lang.InterruptedException
如果这是有意的行为,我可以把它Exception
作为一个对象吗?
之后onPostExecute
应该是电话onCancelled
如果您阅读 cancel() 方法中的文档,您会发现:
尝试取消此任务的执行。如果任务已完成、已被取消或由于其他原因无法取消,则此尝试将失败。
调用 cancel() 会将 isCancelled() 设置为 true。您是否定期在 doInBackground 中检查此方法的返回值?
protected Object doInBackground(Object... x) {
while (/* condition */) {
// work...
if (isCancelled()) break;
}
return null; }
至于异常 java.lang.InterruptedException ,可能有多种原因。
我的猜测是,您可能在错误的地点/时间调用了 cancel(),并且您可能没有在 doInBackground 中定期检查 isCancelled(),因此任务成功完成并调用了 onPostExecute()。