Android异步框架.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android异步框架

Android异步 版本 时间 变动 0.1 2014-08-15 介绍多种框架,重点AsyncTask 问题背景 Android应用使用一个叫做UIThread (也叫MainThread)来专门处理UI 响应和input事件响应,所以在UIThread 里面就应该尽量少做其他的事情,尤其是耗时的I/O操作比如说: 网络访问,数据库读写等。 解决思路 我需要的其他操作,思路其实也很简单,不让我在UIThread里面做,那么就另起灶台,把耗时的过程放到单独的 线程或者进程里面去。其实Java本身就是原生提供强大的多线程并行处理支持的,比如Thread; 但是基于Thread你会发现会有很多问题: 1. 自己实现Thread与UIThread 的同步,与UIThread整合变得异常繁琐; 2. 无法手动cancel掉Thread; 3. 没有默认的ThreadPooling,必须自己管控所有的Thread; 4. 因为与UIThread 同步繁琐,更不用谈当UI生命周期发生突破时候的处理了 基于上面几点原因,Android针对自身需要提供对并行处理的封装接口,包括基础类和封装类: 低级基础类比如:java.util.concurrentpackage 中的ThreadPoolExecutor和Executor; 高级封装类比如:Handler 、AsyncTask 、Loader 以及Service、retainedFragments之类; 由于ThreadPoolExecutor和Executor是Android按官方解释这是并发的基础类所以,所以在此主要关注后面的几种 封装类的技术现状: Android异步演进: Handler Handler作为最原始异步技术最早在API1 时候就引入了,当然这是一种最基本的UI 多线程模型,其原生态程度类 似MFC 中的消息队列,引入Handler 的目的,应该是当时人们最习惯熟悉的一种UI 多线程模型了: 实际使用中Handler只是作为一个桥梁,另外还需要结合Message,MessageQueue,Looper 的一起使用,Android 中可以通过Context.getMainLooper()来查询应用程序主线程的Looper对象: UI绑定的Handler基本使用方法: 注册Handler @Override public void onCreate(Bundle savedInstanceState) { // create a handler to update the UI handler = new Handler() { @Override public void handleMessage(Message msg) { //do update UI } }; } 发送消息 private Runnable runnabl = new Runnable() { @Override public void run() { //handle the message handler.sendMessage(m); } }; Handler方式最大的特点就是灵活,可以方便的控制重复执行节奏,执行间隔,以及执行次序;当然Handler作为桥 梁还可以建立在任一连两个Thread之间; AsyncTask AsyncTask是在APIlevel3被引入Android 的,其主要目的就是封装,主要设计目的是为了把后台的耗时操作,过 程中的进度,与UI 的同步集成到一起; 但是在实际使用过程中,由于API版本的演进,AsyncTask 的内部实现方式有所不同,在 1.6_r2之前的1.5_r4版本 中CORE_POOL_SIZE是1的,随后2.x一直到3.0 CORE_POOL_SIZE设置为5,然后再到后 3.0之后AsyncTa sk大换血,也就是我们在开发中遇到的AsyncTask 串行、并行运行现象并不一致来回反复的情况, 针对这种情况,我们采用在官方AsyncTask实现的基础上,将其单独抽出,重新自定义实现该类并在类实现中统一 android

文档评论(0)

you9391 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档