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开发者文档