取消 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) 来指示任务在执行期间被取消。