📅  最后修改于: 2023-12-03 15:22:59.578000             🧑  作者: Mango
在 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。在本文中,我们介绍了如何创建异步任务、启动异步任务和取消异步任务。如果您需要在应用程序中执行耗时操作,异步任务将是一个非常有用的工具。