android - AsyncTask cancel(Boolean) 调用 onPostExecute -?

标签 android android-asynctask

Possible Duplicate:
onPostExecute on cancelled AsyncTask

为什么取消AsyncTask仍然来电onPostExecute如果文档说应该调用 onCancelled反而。 这是一个长期存在的错误吗?

就我而言,我 cancel(true) asynctask,它完成 doInBackground然后调用 onPostExecutes。 最后它抛出一个

java.lang.InterruptedException

如果这是故意行为,我可以得到这个Exception无论如何作为一个对象?

最佳答案

如果您阅读 cancel() 方法的文档,您会发现:

Attempts to cancel execution of this task. This attempt will fail if the task has already completed, already been cancelled, or could not be cancelled for some other reason.

调用cancel()会将isCancelled()设置为true。您是否定期在 doInBackground 中检查此方法的返回值?

   protected Object doInBackground(Object... x) {  
   while (/* condition */) { 
      // work...    
   if (isCancelled()) break; 
    }    
 return null;  } 

对于 java.lang.InterruptedException 异常,可能有多种原因。

我对你的情况的猜测是你可能在错误的地点/时间调用cancel(),并且你可能没有在doInBackground中定期检查isCancelled(),因此任务成功完成并在onPostExecute () 叫做。

关于android - AsyncTask cancel(Boolean) 调用 onPostExecute -?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10428806/

相关文章:

Android ProgressDialog 显示但进度未更新

android - 键盘打开/关闭后 Flutter 重建

android - 长按操作不会调用 onLongClick()

android - 我可以将红外传感器连接到我的安卓手机吗?

c# - 如何使用 C# 在 Android 中将复选框文本的位置更改为左侧

安卓蜂窝 : Fragment not able to start AsyncTask?

java - 在服务中实现 onActivityResult()

java - 在 AsyncTask 中添加 View ( TextView )

android - 我应该在异步任务的背景中使用 android-async-http 客户端吗?

java - Android 无法从 onPostExecute 更新 TextView