的方法根据文献here询问取消的AsyncTask
调用此方法会导致onCancelled(Object)将UI线程上被调用后doInBackground(对象[])返回
然而,在我的情况下onCancelled(Object)在我调用cancel方法后被调用。我的问题:文档是否错误?
的方法根据文献here询问取消的AsyncTask
调用此方法会导致onCancelled(Object)将UI线程上被调用后doInBackground(对象[])返回
然而,在我的情况下onCancelled(Object)在我调用cancel方法后被调用。我的问题:文档是否错误?
正常执行的AsyncTask
可以处于四种状态:尚未执行,正在执行,已完成并已取消。如果任务已完成或取消,cancel()
方法不起作用。如果任务正在执行,则在调用onCancelled()
之前,必须完成doInBackground()
。但是,如果任务尚未开始执行,将立即调用onCancelled()
,您将无法执行任务。
我经历了类似的问题。调用cancel()后,我的任务继续运行。这对于Android 2.2和2.3是有效的。我最终定期检查doInBackground中的isCancelled()。行为是相同的,你可以调用cancel(true)或cancel(false)。
谢谢您的回复。我的情况与您的opion不一样。 doInbackground已开始。它在10秒内计入1-10。当它数到5时,我呼叫取消。日志显示onCancelled调用。但是,doInbackground任务继续到10,现在它返回。 – teddy