2011-11-04 57 views
0

的方法根据文献here询问取消的AsyncTask

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

然而,在我的情况下onCancelled(Object)在我调用cancel方法后被调用。我的问题:文档是否错误?

回答

0

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

+0

谢谢您的回复。我的情况与您的opion不一样。 doInbackground已开始。它在10秒内计入1-10。当它数到5时,我呼叫取消。日志显示onCancelled调用。但是,doInbackground任务继续到10,现在它返回。 – teddy

0

我经历了类似的问题。调用cancel()后,我的任务继续运行。这对于Android 2.2和2.3是有效的。我最终定期检查doInBackground中的isCancelled()。行为是相同的,你可以调用cancel(true)或cancel(false)。