AsncTask
取消后会发生什么。
是否仍然调用onPostExecute()
。
答案 0 :(得分:4)
答案是否。如文档所述:
public final boolean cancel (boolean mayInterruptIfRunning):
调用此方法可确保onPostExecute(Object)永远不会 调用。调用此方法后,您应该检查该值 定期从doInBackground(Object [])返回isCancelled() 尽早完成任务。
答案 1 :(得分:3)
来自官方的java doc:
可以通过调用cancel(boolean)随时取消任务。 调用此方法将导致后续调用isCancelled() 返回true。 调用此方法后,改为onCancelled(Object) 之后将调用onPostExecute(Object) doInBackground(Object [])返回。确保取消任务 你应该尽快检查返回值 如果可能的话,定期从doInBackground(Object [])获取isCancelled() (例如在循环内部。)
方法java doc:
public final boolean cancel (boolean mayInterruptIfRunning)
尝试取消执行此任务。如果这种尝试失败了 任务已经完成,已经取消,或者不能 由于其他原因被取消。如果成功,这个任务就有了 调用cancel时未启动,此任务永远不会运行。如果 任务已经启动,然后是mayInterruptIfRunning参数 确定执行此任务的线程是否应该是 因试图停止任务而中断。
调用此方法将导致调用onCancelled(Object) 在doInBackground(Object [])返回后的UI线程上。 打电话给这个 方法保证永远不会调用onPostExecute(Object)。之后 调用此方法时,应检查返回的值 isCancelled()定期从doInBackground(Object [])来完成 尽早完成任务。