如何正確取消asynctask任務(wù)

小樊
120
2024-06-28 14:26:28

在Android中,可以通過(guò)調(diào)用AsyncTask的cancel()方法來(lái)取消任務(wù)。以下是正確的步驟:

  1. 在AsyncTask類(lèi)中添加一個(gè)boolean類(lèi)型的變量來(lái)表示任務(wù)是否被取消,比如isCancelled。

  2. 在AsyncTask的doInBackground()方法中,定期檢查isCancelled變量的值,如果為true則立即返回。

  3. 在需要取消任務(wù)的地方,調(diào)用AsyncTask的cancel()方法,并傳入?yún)?shù)true,表示任務(wù)被取消。

  4. 在AsyncTask的onCancelled()方法中處理任務(wù)取消的邏輯。

下面是一個(gè)示例代碼:

public class MyAsyncTask extends AsyncTask<Void, Void, Void> {
    private boolean isCancelled = false;

    @Override
    protected Void doInBackground(Void... voids) {
        while (!isCancelled) {
            // 執(zhí)行任務(wù)
            if (isCancelled) {
                return null;
            }
        }
        return null;
    }

    public void cancelTask() {
        isCancelled = true;
        cancel(true);
    }

    @Override
    protected void onCancelled() {
        // 處理任務(wù)取消的邏輯
    }
}

在需要取消任務(wù)的地方,可以調(diào)用cancelTask()方法:

MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();

// 取消任務(wù)
myAsyncTask.cancelTask();

這樣就可以正確取消AsyncTask任務(wù)。

0