📜  启动异步任务 android - Java (1)

📅  最后修改于: 2023-12-03 15:22:59.578000             🧑  作者: Mango

启动异步任务 android - Java

在 Android 应用程序中,可能需要执行耗时操作,如下载或解码大型数据资源,此类操作需要在异步任务中执行,以免将 UI 线程阻塞。异步任务将被启动,在后台执行操作,然后在 UI 线程上更新用户界面。本文将介绍如何在 Android 应用程序中启动异步任务。

创建异步任务

异步任务是 Android 提供的一种常用 API。AsyncTask 类是在 Android 开发中常用的抽象类,用于在非 UI 线程上执行任务,并在 UI 线程上更新用户界面。下面是如何创建异步任务:

public class MyTask extends AsyncTask<Params, Progress, Result> {
    // 在后台线程上执行任务的代码。
    protected Result doInBackground(Params... params) {
        //...
        return result;
    }

    // 在 UI 线程上更新进度条的代码。
    protected void onProgressUpdate(Progress... values) {
        //...
    }

    // 在 UI 线程上更新界面的代码。
    protected void onPostExecute(Result result) {
        //...
    }
}

上面的代码中,我们创建了一个名为 MyTask 的类,继承了 AsyncTask 类,并使用解释器参数 <Params, Progress, Result>。这三个参数分别表示:

  • Params:传递给 doInBackground() 方法的参数类型。
  • Progress:用于更新进度的参数类型。
  • Result:返回值的参数类型。

注意,这三个参数都是可选的,它们的类型为 Object。如果我们不需要这三个参数,则可以使用 Void 作为代替。

启动异步任务

创建了异步任务之后,我们需要在 Activity、Fragment 或其他组件中启动任务。下面是启动 AsyncTask 的代码:

MyTask task = new MyTask();
task.execute(params);

上面的代码中,我们创建了 MyTask 对象,并调用 execute() 方法来启动异步任务。使用 execute() 方法时,我们可以传递参数到后台线程。

我们还可以在启动任务之前调用 publishProgress() 方法更新执行进度:

MyTask task = new MyTask();
task.execute(params1, params2, params3);

上面的代码中,我们将参数传递到后台线程,并使用 publishProgress() 方法来更新执行进度。

取消异步任务

有时候,我们需要停止已经启动的异步任务。下面是如何取消异步任务的代码:

MyTask task = new MyTask();
task.cancel(true);

上面的代码中,我们调用 cancel(true) 方法来停止异步任务。这个方法将通知后台线程停止执行,并调用 onCancelled() 方法来取消异步任务。

总结

异步任务是 Android 开发中常用的一个 API。在本文中,我们介绍了如何创建异步任务、启动异步任务和取消异步任务。如果您需要在应用程序中执行耗时操作,异步任务将是一个非常有用的工具。