2015-04-06 68 views
1

为的AsyncTask的cancel()方法状态的文档:cancel()之后的AsyncTask状态?

调用此方法保证onPostExecute(Object)永远不会调用。

的文档AsyncTask.Status.FINISHED状态:

表示onPostExecute(Result)已经完成。

这是否表示取消的AsyncTasks的状态为RUNNING?在那种情况下,我如何从已取消的任务中告诉正在运行的任务?

回答

4

根据the source code to AsyncTask,当后台工作完成时,将调用onCancelled()onPostExecute()。之后,状态设置为FINISHED。在此之前,任务大概是RUNNING

您也可以致电isCancelled()查看任务是否已取消,然后进入FINISHED状态。

0

CommonsWare answer绝对正确!

只是想从AsyncTask添加特定的代码片段,以证明他的正确性:

private void finish(Result result) { 
    if (isCancelled()) { 
     onCancelled(result); 
    } else { 
     onPostExecute(result); 
    } 
    mStatus = Status.FINISHED; 
} 
相关问题