2016-09-24 29 views
2

比方说,我开始和AsyncTask并保持对它的引用:如果/切换评估原子?

AsyncTask task = new SomeAsyncTask().execute(); 

然后在某一点,而该任务仍在运行,我执行以下操作:

if(task.getStatus() == AsyncTask.Status.RUNNING) { 
    task.cancel(true); 
} 

可以将状态在AsyncTask的成为后task.getStatus() == AsyncTask.Status.RUNNING回报truecancel()之前FINISHED叫?

换句话说,使用上面cancel()以上的代码可能会在完成的AsyncTask上被调用吗?

+3

是的,这是可能的。 – yole

+0

是的,这是一种可能性。您可以在任务中使用wasCancelCalled()进行更多检查 –

+1

如果您想在任务完成后执行某些操作,请使用onPostExecute –

回答

3

是的,这是可能的,这是异步编程的本质。

但是,如果任务在这两个陈述之间完成,您拨打cancel的电话将是良性的。