致电
cancel(true);
on asyncTaskObj将用户带到
onCancelled()
方法。何时以及为何
onCancelled(Object result)
将被调用,它的用途是什么?
答案 0 :(得分:1)
调用此方法将导致对isCancelled()的后续调用返回true。在调用此方法后,onCancelled(Object),
在doInBackground(Object [])返回后,将调用而不是onPostExecute(Object)。
来自Android开发者文档developer.android.com/reference/android/os/AsyncTask.html
如果有for循环,你可以检查isCancelled()来完成doInbackground的工作
protected Object doInBackground(Object... obj) {
while (/* condition */) {
//.......
if (isCancelled()) break;
}
return myReturn;
}
答案 1 :(得分:0)
这来自documentation ...
在调用cancel(boolean)并且doInBackground(Object [])完成后在UI线程上运行。
默认实现只是调用onCancelled()并忽略结果。如果您编写自己的实现,请不要调用super.onCancelled(result)。
显然,它让您有机会在最终取消操作后作出反应,例如更改某些UI组件的状态或通知用户。例如,假设您正在执行长时间运行的操作(如下载文件),而文件正在下载时显示进度条,但您还会显示“取消”按钮,以便用户可以取消下载。
点击取消后,您可以停止进度条并在触发“onCancelled”时显示“正在取消...”文本,您可以隐藏“取消”按钮,状态文本视图和进度条。
答案 2 :(得分:0)
可以通过调用取消(布尔)随时取消任务。
调用此方法将导致后续调用 isCancelled() 返回true。
调用此方法后, onCancelled(Object),而不是 在doInBackground(Object [])之后将调用onPostExecute(Object) 回报。
为了确保尽快取消任务,您应该这样做 始终定期检查 isCancelled()的返回值 doInBackground(Object []),如果可能的话(例如在循环内)。
description for cancel() function