取消 AsyncTask
YourAsyncTask task = new YourAsyncTask();
task.execute();
task.cancel();
这不会停止你的任务,如果它正在进行中,它只是设置取消的标志,可以通过检查 isCancelled()
的返回值(假设你的代码当前正在运行)来检查:
class YourAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
while(!isCancelled()) {
... doing long task stuff
//Do something, you need, upload part of file, for example
if (isCancelled()) {
return null; // Task was detected as canceled
}
if (yourTaskCompleted) {
return null;
}
}
}
}
注意
如果在 doInBackground(Params... params)
仍在执行时取消 AsyncTask,则 doInBackground(Params... params)
返回后将不会调用方法 onPostExecute(Result result)
。AsyncTask 将调用 onCancelled(Result result)
来指示任务在执行期间被取消。