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



调用时

cancel(true); 

on asyncTaskObj 将用户带到

onCancelled()

方法。何时以及为何

onCancelled(Object result) 

会被召唤,有什么用?

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

  • 调用此方法将导致后续调用 isCancel() 到返回 true。

  • 调用此方法后,onCancel(Object),而不是onPostExecute(Object) 将在 doInBackground(Object[]) 之后调用返回。

  • 要确保尽快取消任务,您应该始终定期检查 isCancel() 的返回值doInBackground(Object[]),如果可能的话(例如在循环中)。

取消() 函数的说明

isCancel() 函数的说明

onCancel() 函数的说明

调用此方法将导致后续对 isCancel() 的调用返回 true。调用此方法后,onCancel(对象),

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

它来自安卓开发者文档 developer.android.com/reference/android/os/AsyncTask.html

你可以检查isCancel()来完成doInbackground的工作,如果它有循环

protected Object doInBackground(Object... obj) {
  while (/* condition */) {
//.......
    if (isCancelled()) break;
  }
  return myReturn;
}
这是

来自文档...

调用取消(布尔值)并且 doInBackground(Object[]) 完成后在 UI 线程上运行。

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

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

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

相关内容

最新更新