Android深入浅出系列课程---Lesson16-AFF110606_AsyncTask异步任务

原创 2012年03月19日 11:07:39
 大家好,上一讲我们介绍了Handler-不可缺少的异步,这一讲我们将进入AFF110606_AsyncTask异步任务.
更多Android深入浅出课程列表:http://www.eoeandroid.com/thread-109361-1-1.html
一、课程目标:了解AsyncTask类 以及此类的实现 。 明了它与Handler谁更轻量级如何使用AsyncTask .
二、重点难点:AsyncTask与线程及线程池的关系如何分析进程的内存占用?
三、考核目标:AsyncTask是多线程么?与Handler相比, AsyncTask消耗资源情况如何,为什么?   
四、课后练习:写一个使用AsyncTask 从网络更新显示图片的例子(参照Demo)

&AsyncTask的定义
AsyncTask enables proper and easy use of the UI thread. This class allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called Params, Progress and Result, and 4 steps, called onPreExecute, doInBackground, onProgressUpdate and onPostExecute

Android为了降低异步操作开发难度,在Handler基础上提供了AsyncTask。AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务。
&演示AsyncTask用法:Demo
AsyncTask定义了三种泛型类型 Params,Progress和Result。
        Params 启动任务执行的输入参数,比如HTTP请求的URL。
        Progress 后台任务执行的百分比。
        Result 后台执行任务最终返回的结果,比如String。
AsyncTask方法  必选方法:
        doInBackground(Params…) 后台执行,比较耗时的操作都可以放在这里。注意这里不能直接操作UI。此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。
        onPostExecute(Result)  相当于Handler 处理UI的方式,在这里面可以使用在doInBackground 得到的结果处理操作UI。 此方法在主线程执行,任务执行的结果作为此方法的参数返回可选方法:
        onProgressUpdate(Progress…)   可以使用进度条增加用户体验度。 此方法在主线程执行,用于显示任务执行的进度。
        onPreExecute()        这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。
        onCancelled()             用户调用取消时,要做的操作

AsyncTask三个状态:pending , running , finished

使用AsyncTask类,遵守的准则:
        Task的实例必须在UI thread中创建;
        execute方法必须在UI thread中调用;
        不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
该task只能被执行一次,否则多次调用时将会出现异常;
本讲对Dalvik虚拟机概述介绍,下一讲将进入AsyncTask异步任务,内容预告:Android开发视频教程-深入浅出系列Lesson17-SPI110725_在Android2.2以上实现MobileWidget,敬请期待。



特别推荐新课程:Android开发高端课程
http://www.mobidever.com/forum.php?mod=viewthread&tid=2098
本课视频地址:http://v.youku.com/v_show/id_XMzI4MDg4NzQ4.html
课程下载地址:http://www.verycd.com/topics/2900036/ (VeryCD电驴)
网址:http://www.mobidever.com/forum.php (Mobidever-Android开发联盟)

深入浅出Oracle GoldenGate数据复制

一、系统介绍:            随着企业信息化的日益复杂化,同构和异构数据库之间的数据复制,变得越来越重要。Oracle Golden Gate是一种基于日志的结构化数据复制备份软件, 它通...
  • u013019627
  • u013019627
  • 2014年01月20日 11:59
  • 1260

深入浅出Extjs4.1.1视频教程

百度网盘下载:链接:http://pan.baidu.com/s/1mg5ZKLE 密码:cn4s 第1讲.ExtJs初识及其环境搭建 第2讲.开始ExtJs梦想之旅 第3讲.ExtJS工具栏、菜单...
  • ejdyneifys
  • ejdyneifys
  • 2015年09月25日 09:27
  • 841

深入浅出.NET代码生成系列(2):一些基本类

既然叫“深入浅出”了,那我们先来深一下,好吧?   一、用到了哪些命名空间? 说白了,基本上与代码生有关的类都在System.CodeDom命名空间和System.CodeDom.Compile...
  • tcjiaan
  • tcjiaan
  • 2012年06月28日 21:41
  • 4250

集成电路——深入浅出STM8单片机笔记

集成电路是由硅组成,是由沙子净化提纯得到的电子级高纯度硅锭—— 经过切割得到晶圆,进行光刻或者平板印刷、蚀刻、离子注入、金属沉积、金属层搭建、金属互连、晶圆测试与切刻、核心封装、等级测试等诸多步骤...
  • Song1com
  • Song1com
  • 2017年07月22日 16:55
  • 312

深入浅出React(二):React开发神器Webpack

编者按:自2013年Facebook发布以来,React吸引了越来越多的开发者,基于它的衍生技术,如React Native、React Canvas等也层出不穷。InfoQ精心策划“深入浅出Reac...
  • geqian2010
  • geqian2010
  • 2015年11月04日 18:34
  • 1709

O'Reilly之深入浅出Head First系列的中文版与英文版合集

Head First系列是O’Reilly出版社最成功的系列图书,自问世以来受到了无数读者的喜爱,并屡获大奖。其图文并茂,讲述编程技术由浅到深,也被称为“深入浅出”系列,是不可多得的各阶段程序员的参考...
  • Torchfire
  • Torchfire
  • 2013年10月05日 21:16
  • 41930

深入浅出MyBatis技术原理和实战(三)

mybatis配置相关
  • humian151
  • humian151
  • 2017年03月14日 11:17
  • 200

【B类】BI商业智能、大数据、Mysql、等系列课程集

一.天善智能BI课程系列 1.1  天善智能 BIEE课程                                                        试看下载:http://...
  • snowfoxmonitor
  • snowfoxmonitor
  • 2016年03月06日 17:04
  • 2599

《重磅消息》深度强化学习入门及进阶课程第二期开课啦

人工智能有望在工业、技术和数字革命层面带来前所未有的社会变革。能够进行感测、归因和操作的机器将加快众多领域内大规模问题的解决,这些领域包括科学、金融、医学和教育,进而增强人类的能力,并帮助我们实现更远...
  • lqfarmer
  • lqfarmer
  • 2017年09月04日 21:04
  • 352

深入浅出.NET代码生成系列(6):语句

生成代码语句(可以理解为带分号结束的代码,除了if,for这些)所使用到的类,都是从CodeStatement,因此,要知道.NET类库所提供的类能生成哪些代码语句,从MSDN参考文档中找到CodeS...
  • tcjiaan
  • tcjiaan
  • 2012年07月15日 20:41
  • 2980
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android深入浅出系列课程---Lesson16-AFF110606_AsyncTask异步任务
举报原因:
原因补充:

(最多只允许输入30个字)