码迷,mamicode.com
首页 > 移动开发 > 详细

Android异步任务类分析

时间:2015-02-07 17:26:55      阅读:935      评论:0      收藏:0      [点我收藏+]

标签:android   asynctask   异步任务   

一、为什么要使用异步任务类? 


Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler对象向UI线程发送消息,完成界面的更新,
这种方式对整个界面的控制非常精细。
但是也有缺点,例如代码臃肿,所以为了简化操作,Android 1.5 sdk 提供了一个工具类 AsyncTask(异步任务类),
使得创建异步任务变的更加简单。

二、异步任务类的实现


异步类实现计数演示过程:

首先在 主Activity文件中:(主Activity用来解析程序的第一个界面)
技术分享

1. 创建异步类任务的对象,并给异步类的构造传递一个文本对象的引用,这样在异步任务中能操作这个文本框;
2. 使用异步类对象的引用调用 execute(Params .. Params)方法,执行异步任务。也即进入了我们创建的异步任务中去执行;

说明:
execute()可以传递多个参数,传递的参数类型受异步类的第一个参数类型决定,如果异步类的第一个参数类型为Integer类型,
那么execute传递的参数就必须是整型的,以此类推;
在异步类用doInBackground(Integer ... params)方法来接收execute传递的参数,这种参数的写法表示,用来接收多个传递来
的参数,都保存在数组params[ ]中,params[0]表示传递的第一个参数,以此类推;
技术分享
                

主Activity代码如下:
技术分享


进入了我们创建的异步任务中:

    首先介绍一下这个异步任务类的创建及相应参数说明:
    a. 在创建AsyncTask类(异步任务类)的时候,要设定数据类型;(称为Android的泛型编程)
    技术分享
    参数说明:
    技术分享
    b. 通俗说一下参数:
    第一个参数的类型,就是我们在执行execute()方法时要传递的参数类型,还有接收该参数的方法doInBackground()的参数类型保持一致;
    第二个参数的类型,就是onProgressUpdate(..)方法接收publicProgress()方法传递数据对应的类型;
    第三个参数的类型,就是接收doInBackground()方法的返回值的类型;


3.  在execute方法执行后,也即启动了异步任务,onPreExecute()方法立即被执行;

4.  在onPreExecute()执行完成后,立即执行doInBackground()方法;
     该方法的说明:
        a. 该方法被子线程调用;
        b. 将耗时的操作放在该方法中;
        c. 在该方法中,通过异步类的对象调用publishProgress()该方法,要求系统自动调用onProgressUpdate()方法;类似handle的用法;
        d. 该方法的返回值,赋值给了类的第三个参数Result;

5. 由于上面调用了publishProgress()该方法,会要求系统的UI主线程自动调用onProgressUpdate()方法;   
        a. 该方法被UI主线程调用;
技术分享
技术分享

异步任务效果图: 
技术分享技术分享

异步任务实现列表的刷新:

实现代码:


技术分享



Android异步任务类分析

标签:android   asynctask   异步任务   

原文地址:http://blog.csdn.net/agoogleboy/article/details/43604743

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!