询问AsyncTask的取消方法

时间:2011-11-04 04:19:11

标签: android android-asynctask

根据文件here

  

调用此方法将导致在doInBackground(Object [])返回后在UI线程上调用onCancelled(Object)

但是,在我的情况下,在调用cancel方法后立即调用onCancelled(Object)。我的问题:文件错了吗?

2 个答案:

答案 0 :(得分:0)

正常执行的AsyncTask可以处于四种状态:尚未执行,执行,完成和取消。如果任务已完成或已取消,则cancel()方法不起作用。如果任务正在执行,则doInBackground()必须在调用onCancelled()之前完成。但是,如果任务尚未开始执行,则会立即调用onCancelled(),您将无法执行该任务。

答案 1 :(得分:0)

我遇到了类似的问题。在调用cancel()后,我的任务继续运行。这适用于Android 2.2和2.3。我最终定期检查doInBackground中的isCancelled()。并且行为是相同的,你可以调用cancel(true)或取消(false)。