取消 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) 來指示任務在執行期間被取消。