onCancelled(对象结果)方法在AsyncTask android中的确切用途是什么?

onCancelled(对象结果)方法在AsyncTask android中的确切用途是什么?,android,Android,打电话的时候 cancel(true); 在asyncTaskObj上,将用户带到 onCancelled() 方法。什么时候,为什么 onCancelled(Object result) 将被调用,其用途是什么?调用此方法将导致随后对isCancelled()的调用返回true。调用此方法后,onCancelled(对象) doInBackground(Object[])返回后将调用而不是onPostExecute(Object) 它来自Android开发者文档Developer.A

打电话的时候

cancel(true); 
在asyncTaskObj上,将用户带到

onCancelled()
方法。什么时候,为什么

onCancelled(Object result) 

将被调用,其用途是什么?

调用此方法将导致随后对isCancelled()的调用返回true。调用此方法后,onCancelled(对象)

doInBackground(Object[])返回后将调用而不是onPostExecute(Object)

它来自Android开发者文档Developer.Android.com/reference/Android/os/AsyncTask.html

如果doInbackground有循环,则可以选中isCancelled()以完成其工作

protected Object doInBackground(Object... obj) {
  while (/* condition */) {

//.......

    if (isCancelled()) break;
  }
  return myReturn;
}
这是从

在调用cancel(布尔值)并完成doInBackground(对象[])后在UI线程上运行

默认实现只调用onCancelled()并忽略结果。如果您编写自己的实现,请不要调用super.onCancelled(result)

显然,它让您有机会在操作最终取消后做出反应,例如更改某些UI组件的状态或通知用户。例如,假设您正在执行一个长时间运行的操作,例如下载一个文件,当文件下载时,您会显示一个进度条,但您也会显示一个“取消”按钮,以便用户可以取消下载

单击“取消”后,您可以停止进度条并在触发“取消”时显示“取消…”文本。您可以隐藏“取消”按钮、状态文本视图和进度条。

  • 可以通过调用取消(布尔值)随时取消任务


  • 调用此方法将导致对isCancelled()的后续调用 返回true

  • 调用此方法后,取消(对象),而不是 onPostExecute(对象)将在doInBackground(对象[])之后调用 返回

  • 为了确保任务尽快取消,您应该 始终定期检查isCancelled()的返回值 doInBackground(对象[]),如果可能(例如在循环内)


看看官方文件中存在的这类问题。回答正确,但您应该参考源代码,这显然是官方api文档。感谢JHH的建议。它来自Android开发者文档