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