`

AsyncTask的使用

 
阅读更多

AsyncTask是个抽象类,因此需要创建继承它的具体类。具体类必需实现doInBackground()抽象方法,这是AsyncTask唯一的抽象方法。很多具体类也常会重写onPostExecute()方法,用来处理执行结果。

 

使用AsyncTask可以使代码清析整洁,它将工作线程代码与UI线程代码分离。

 

示例:

/*
	AsyncTask的三个泛型参数说明(三个参数可以是任何类型)
	第一个参数:传入doInBackground()方法的参数类型
	第二个参数:传入onProgressUpdate()方法的参数类型
	第三个参数:传入onPostExecute()方法的参数类型,也是doInBackground()方法返回的类型。
*/
public class DownloadFileTask extends AsyncTask<String, Integer, Long> {
	/**
	 * 此方法在独立线程(双叫工作线程)中执行
	 */
	protected Long doInBackground(String... urls) {
		Long totalSize = 0;
		for (int i = 0; i < urls.length; i++) {
			totalSize += downloadFile(urls[i]);
			publishProgress((int)((i / (float)urls.length) * 100));//通知UI线程调用onProgressUpdate()方法
		}
		return totalSize;
	}
	/**
	 * 此方法在UI线程中执行
	 */
	protected void onProgressUpdate(Integer... progress) {
		setProgressPercent(progress[0]);
	}
	/**
	 * 此方法在UI线程中执行
	 */
	protected void onPostExecute(Long totalSize) {
		showDialog("Downloaded " + totalSize + " bytes");
	}
}
 

 

使用规则:

1.实例必需用UI线程创建

2.实例的execute()方法必需用UI线程调用

3.不要手动调用onPreExecute()、onPostExecute()、doInBackground()和onProgressUpdate方法

4.实例只能执行一次(execute()方法),如果尝试调第二次将会抛异常

 

分享到:
评论

相关推荐

    Android最全最简单的异步任务AsyncTask使用解析

    Android异步任务AsyncTask使用解析 Android异步任务AsyncTask使用解析是指在Android应用程序中使用AsyncTask来实现异步任务的处理。AsyncTask是一个抽象类,使用时需要继承这个类,然后调用execute()方法。...

    Android_AsyncTask使用

    ### Android AsyncTask 使用详解 #### 一、AsyncTask 概览 **AsyncTask** 是 Android 提供的一个用于在后台线程执行耗时操作并在 UI 线程更新结果的类。它简化了多线程编程的过程,使开发者无需手动管理线程和...

    Android开发之AsyncTask机制及使用细节例子源码

    在`AsyncTaskDemoActivity`中,我们可以预期看到一个具体的AsyncTask使用示例,包括如何创建和启动任务,传递参数,处理结果以及处理取消和进度更新等情况。通过分析这个示例,开发者可以更好地理解和掌握AsyncTask...

    AsyncTask使用实例

    ### 二、AsyncTask使用步骤 1. **创建AsyncTask子类**:首先,我们需要创建一个继承自AsyncTask的子类,定义泛型参数,并重写上述四个方法。 ```java public class MyAsyncTask extends AsyncTask, Integer, ...

    Handler与AsyncTask使用示例

    现在让我们来看一个`Handler`和`AsyncTask`结合使用的示例: ```java public class MainActivity extends AppCompatActivity { private Handler mHandler = new Handler() { @Override public void ...

    AsyncTask使用及源码解析

    AsyncTask的使用非常简单,首先创建一个继承自AsyncTask的子类,然后重写doInBackground()方法,将需要后台执行的任务放入这个方法。例如: ```java public class MyTask extends AsyncTask, Integer, String&gt; { @...

    AsyncTask使用实例(ADT工程)

    本实例将详细讲解如何使用AsyncTask,并结合ProgressBar进行实时进度显示,以提高用户体验。 首先,AsyncTask有三个泛型参数:Params, Progress, Result。Params表示异步任务执行前需要的输入参数类型,Progress是...

    AsyncTask使用

    Android API 3时引进了AsyncTask,也叫异步任务。使用它可以很方便的更新主线程中的UI,使用它比Handler、Thread更简单。由于AsyncTask是抽象类,要使用它首先要创建子类继承它。创建子类时需要三个泛型参数

    Android AsyncTask 源码解析

    在提供的 `zhy_asynctask_demo01` 文件中,我们可以找到一个简单的 AsyncTask 示例,它演示了如何使用 AsyncTask 来下载文件。这个例子涵盖了从初始化任务、执行任务到处理结果的完整流程,是理解和学习 AsyncTask ...

    Android中异步类AsyncTask用法总结

    AsyncTask 是 Android 平台上一种轻量级的异步处理机制,主要用于在后台执行耗时操作,同时确保结果能够在主线程中安全地更新 UI。...正确理解和使用 AsyncTask,可以帮助开发者更高效地构建用户界面,提升用户体验。

    Android AsyncTask 使用

    在Android应用开发中,特别是在涉及到网络请求、大量计算或者长时间操作时,使用AsyncTask是一个常见且实用的方法。 首先,我们来看第一种使用方法:加载网络图片。在Android中,直接在主线程中进行网络请求是不被...

    asyncTask简单使用

    8. **线程池的管理**:从Android 3.0(API级别11)开始,AsyncTask使用了线程池来管理后台任务。这意味着多个AsyncTask可能会并发执行,如果你希望它们按顺序执行,需要自行管理。 9. **生命周期问题**:AsyncTask...

    Android 使用AsyncTask异步更新UI界面

    ### 三、AsyncTask使用步骤 1. 创建`AsyncTask`子类,定义泛型参数并重写必要方法。 ```java public class MyAsyncTask extends AsyncTask, Integer, String&gt; { @Override protected void onPreExecute() { // ...

    详解Android中AsyncTask的使用中文最新版本

    一个典型的AsyncTask使用场景包括以下几个步骤:首先创建AsyncTask的子类,并重写doInBackground、onProgressUpdate、onPreExecute、onPostExecute等方法。然后在需要进行异步处理的Activity或Fragment中实例化这个...

    AsyncTask使用注意

    2. **自定义线程池**:通过重写`AsyncTask.executeOnExecutor()`方法,可以使用自定义的Executor来执行任务。例如,可以创建一个固定大小的线程池,以防止任务堆积。 3. **使用其他异步处理方式**:如果任务数量...

    Android_AsyncTask_详解

    3. **避免频繁使用**:由于 `AsyncTask` 创建新的工作线程,频繁使用可能会导致性能下降。对于频繁的后台操作,推荐使用 `Handler` 或 `Service`。 #### 六、总结 `AsyncTask` 为 Android 开发者提供了一个简单...

    Android AsyncTask

    自Android 3.0 (API Level 11)开始,AsyncTask使用一个内部线程池来管理后台任务,这有助于控制并发任务的数量。但是,如果你需要更精细的控制,例如设置线程池大小,可以自定义Executor来替换默认的线程池。 总结...

    AsyncTask的使用及ListView的常见优化

    `AsyncTask`还提供了取消任务、监控任务进度等功能,但需要注意的是,由于`AsyncTask`的生命周期与Activity绑定,若Activity被销毁,未完成的`AsyncTask`可能会导致内存泄漏。 接下来是`ListView`的优化。`ListView...

    Android-详细解读AsyncTask的黑暗面以及一种替代方案

    1. **线程池问题**:默认情况下,AsyncTask使用一个串行执行的线程池,这意味着同一时间只能执行一个任务。如果并发执行多个任务,可能导致性能瓶颈。从Android 3.0(API Level 11)开始,线程池改为并行执行,但这...

    异步加载AsyncTask

    自Android 3.0(API 11)开始,AsyncTask使用了一个内部线程池来管理执行的任务。这意味着并发执行多个相同类型的AsyncTask可能会导致线程复用,从而可能导致意外的结果。因此,如果你需要确保每个任务独立执行,应...

Global site tag (gtag.js) - Google Analytics