Android异步任务类分析
来源:互联网 发布:多标签分类算法 编辑:程序博客网 时间:2024/04/28 06:41
一、为什么要使用异步任务类?
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主线程调用;
b. 在调用publishProgress()方法时,可以传递参数给onProgressUpdate(Integer... values);values[]数组来接收传递的参数,
用来将结果显示在UI控件上;
6. 当后台操作结束时,onPostExecute()方法会被自动调用,类的第三个参数Result的结果会传递到此方法中,可以将Result的结果显示在
UI控件上;
异步任务类代码如下:
异步任务效果图:
异步任务实现列表的刷新:
实现代码:
1 0
- Android异步任务类分析
- Android之Async Task异步任务分析
- Android异步任务处理框架AsyncTask源码分析
- Android从源码分析二:AsyncTask异步任务
- Android异步任务AsyncTask的使用与原理分析
- Android异步任务AsyncTask的使用与原理分析
- Android异步任务AsyncTask的使用与原理分析
- Android异步任务处理框架AsyncTask源码分析
- Android异步任务AsyncTask的使用与原理分析
- Android异步任务AsyncTask的使用与原理分析
- 《android framework常用api源码分析》之AsyncTask异步任务
- Android开发 AsyncTask异步任务类
- Android开发 AsyncTask异步任务类
- Android中异步任务类基础
- android 学习--异步任务类AsyncTask
- 一套完善的Android异步任务类
- 一套完善的Android异步任务类
- Android异步任务类的运行示例
- Fiddler
- 用PHP编写CAPTCHA(验证码)
- opencv实现车牌识别之车牌号定位_2
- Java EE 7 教程 第二部分 平台基础 第3章 创建资源 第3.1节 资源和JNDI命名
- 第19天: stutct
- Android异步任务类分析
- service小结(一)
- python模拟登陆网站
- android实现微信支付
- 求整数均值
- 优化linux内核参数
- error while loading shared libraries问题的解决办法
- 黑马程序员------C语言-----指针
- NoSQL/MongoDB安装