温馨提示×

如何正确取消asynctask任务

小樊
82
2024-06-28 14:26:28
栏目: 编程语言

在Android中,可以通过调用AsyncTask的cancel()方法来取消任务。以下是正确的步骤:

  1. 在AsyncTask类中添加一个boolean类型的变量来表示任务是否被取消,比如isCancelled。

  2. 在AsyncTask的doInBackground()方法中,定期检查isCancelled变量的值,如果为true则立即返回。

  3. 在需要取消任务的地方,调用AsyncTask的cancel()方法,并传入参数true,表示任务被取消。

  4. 在AsyncTask的onCancelled()方法中处理任务取消的逻辑。

下面是一个示例代码:

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

    @Override
    protected Void doInBackground(Void... voids) {
        while (!isCancelled) {
            // 执行任务
            if (isCancelled) {
                return null;
            }
        }
        return null;
    }

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

    @Override
    protected void onCancelled() {
        // 处理任务取消的逻辑
    }
}

在需要取消任务的地方,可以调用cancelTask()方法:

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

// 取消任务
myAsyncTask.cancelTask();

这样就可以正确取消AsyncTask任务。

0