`
devil587
  • 浏览: 5113 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

AsyncTask介绍

 
阅读更多
AsyncTask介绍
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。
Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制。关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可以参照一下。

为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任务变得更加简单,不再需要编写任务线程和Handler实例即可完成相同的任务。
Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理。
首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的。


Android为了降低这个开发难度,提供了AsyncTask。AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。

AsyncTask直接继承于Object类,位置为android.os.AsyncTask。要使用AsyncTask工作我们要提供三个泛型参数,并重载几个方法(至少重载一个)。



AsyncTask定义了三种泛型类型 Params,Progress和Result。

    Params 启动任务执行的输入参数,比如HTTP请求的URL。
    Progress 后台任务执行的百分比。
    Result 后台执行任务最终返回的结果,比如String。

一个异步任务的执行一般包括以下几个步骤:

1.execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。

2.onPreExecute(),在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。

3.doInBackground(Params... params),在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。

4.onProgressUpdate(Progress... values),在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。

5.onPostExecute(Result result),当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。

在使用的时候,有几点需要格外注意:

1.异步任务的实例必须在UI线程中创建。

2.execute(Params... params)方法必须在UI线程中调用。

3.不要手动调用onPreExecute(),doInBackground(Params... params),onProgressUpdate(Progress... values),onPostExecute(Result result)这几个方法。

4.不能在doInBackground(Params... params)中更改UI组件的信息。

5.一个任务实例只能执行一次,如果执行第二次将会抛出异常
分享到:
评论

相关推荐

    android AsyncTask介绍

    ### Android AsyncTask介绍 #### 一、AsyncTask与Handler对比 ##### 1.1 AsyncTask实现原理及优缺点 **实现原理**: - `AsyncTask` 是 Android 提供的一个轻量级异步类,允许开发者直接继承它并在其中实现异步...

    Android AsyncTask 源码解析

    通过以上对 AsyncTask 的源码解析和使用方法的介绍,你应该对如何在 Android 应用中高效地使用异步任务有了更深入的理解。在实际开发中,正确理解和使用 AsyncTask 可以帮助我们编写出更加流畅、响应快速的应用程序...

    01_AsyncTask_演示线程阻塞

    在博客《Android专题之AsyncTask(一)基本概念介绍》中,我们详细分析了`AsyncTask`的优缺点,以及在实际项目中如何合理使用。通过学习这些内容,开发者可以更好地理解和运用`AsyncTask`,提高应用的响应速度和用户...

    AsyncTask的示例代码

    以上就是关于AsyncTask的基本介绍和使用方法,开发者可以根据实际需求灵活运用,以提升Android应用的用户体验。在实际开发中,理解并掌握AsyncTask的工作原理和最佳实践,对于编写高效、流畅的Android应用至关重要。

    Android中使用ListView数据异步加载与AsyncTask

    本篇将详细介绍Android中如何利用ListView和AsyncTask实现数据的异步加载。 一、ListView简介 ListView是一种可滚动的视图,可以显示一组项目列表。每个项目都由一个ListView的子视图(通常称为“项布局”)表示。...

    AndEngine_分析之三-----AsyncTask_BaseActivity备忘

    通过对`AsyncTask`的详细介绍和`BaseActivity`中的应用案例,我们可以了解到如何在AndEngine中使用`AsyncTask`来进行后台处理和更新UI的操作。这种方法不仅能够提高用户体验,还简化了代码的编写过程。开发者可以...

    AsyncTask异步线程下载图片示例

    本示例将详细介绍如何使用`AsyncTask`来实现图片的异步下载。 首先,`AsyncTask`有三个泛型参数:`Params`, `Progress`, 和 `Result`。在下载图片的场景中,我们通常不需要`Progress`(进度更新)和`Params`(因为...

    android较轻级异步任务AsyncTask

    下面详细介绍这些阶段: - **onPreExecute()**:在主线程中执行,通常用于初始化任务或设置UI组件,如显示加载指示器。 - **doInBackground(Params...)**:在后台线程中执行,适合进行耗时操作,如网络请求、...

    详解Android 中AsyncTask 的使用

    1. **AsyncTask介绍**: - **Handler**:Handler是一种基于消息队列的异步处理方式,通过Message对象向UI线程发送消息来更新界面。它的优点在于能对整个处理流程进行精细化控制,但缺点是代码结构相对复杂,当有多...

    Pro Android 4 (Professional Apress)

    介绍了AsyncTask类的使用方法及其在简化异步任务执行过程中的作用。本章还讨论了如何避免内存泄漏和其他常见问题。 ##### 19. Broadcast Receivers and Long-Running Services 探讨了Broadcast Receiver组件的功能...

    安卓开发-使用AsyncTask异步发起HTTP请求

    本文简单介绍了如何使用异步线程实现手机与其他服务器端接口进行通讯

    android demo,asyncTask的使用,该实例详细的介绍了如何创建,调用。

    在Android开发中,AsyncTask是一种轻量级的异步任务处理机制,主要用于UI线程与后台线程之间的通信,以避免阻塞用户界面。在这个"android demo, asyncTask的使用"示例中,我们将深入探讨AsyncTask的工作原理、创建...

    Android开发笔记之:AsyncTask的应用详解

    AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和《Android开发笔记之:深入理解多线程AsyncTask》这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小...

    Android中AsyncTask详细介绍

    AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask并不是那么好,甚至有些糟糕。本文我会讲AsyncTask会引起哪些问题,如何修复这些问题,并且关于AsyncTask的一些替代方案...

    AsyncTask和Handler的优缺点比较

    Handler介绍 Handler主要接受子线程发送的数据,并用此数据配合主线程更新UI。当应用程序启动时,Android首先会开启一个主线程,主线程为管理界面中的UI控件,进行事件分发,更新UI只能在主线程中更新,子线程中...

    AsyncTask.rar

    下面将详细介绍`AsyncTask`的工作原理和使用方法。 `AsyncTask`类包含三个泛型参数:`Params`、`Progress`和`Result`,分别代表执行任务所需的输入参数类型、执行过程中更新进度的类型以及任务完成后返回的结果类型...

    AsyncTask异步加载

    下面将详细介绍`AsyncTask`的工作原理、使用方法以及注意事项。 `AsyncTask`包含三个泛型参数:`Params`,`Progress`和`Result`。`Params`表示传递到后台任务的输入参数类型,`Progress`表示后台任务进度的类型...

Global site tag (gtag.js) - Google Analytics