Android网络负载请求优化的方案的设计.docVIP

Android网络负载请求优化的方案的设计.doc

  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网络负载请求优化的方案的设计   【摘要】 目前Android平台的应用越来越多,基于Android平台的开发者也越来越多。对于手机平台来说,如何在这么小的平台上流畅的运行一个程序变得越来越重要。其中网络负载请求这块是APP性能优化的一个重要的部分。高性能的APP一般网络数据请求效率也都非常的高,体验自然会得到提升。本文从Android平台移动APP的网络负载请求优化入手,分析和设计一个基于APP网络数据请求模块的架构和优化设计方案。   【关键词】 Android 网络 网络优化 网络架构   一、Android系统结构概述   1.1 Android架构分析   Android是基于Linux的一套完善的开源移动终端平台操作系统,系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。   1.2 Android网络模块分析   Android网络模块一般分为两种:基于Http协议的,基于Socket的。一般Socket是涉及到通讯聊天方面的APP采用的协议。这里我们只分析基于Http协议的部分。ANDROID系统网络连接和管理服务由四个系统服务ConnectivityService、NetworkPolicyManagerService、NetworkManagementService、NetworkStatsService共同配合完成网络连接和管理功能。几个网络管理服务搭配电源管理服务,会针对各个网络环境下,如2G,3G,4G,Wifi和无网络环境下的网络处理和电量相关优化处理。   目前Android4.0后的系统是不允许任何网络耗时请求在UI线程中操作请求,想请求网络操作必须单独去开启一个线程或者异步任务去处理相关网络操作,这样不会阻塞UI线程,当操作完成后通知UI线程更新界面和相应的逻辑。   二、Android网络负载请求优化方案   2.1 Android 网络优化分析   一般造成APP卡顿不流畅,数据请求缓慢的网络相关原因有:多网络请求同时异步并发;网络请求的生命周期没有和Activity和生命周期的联动,Activity关闭后也可能某个网络请求还在后台进行;网络请求的优先级处理不合理;重复网络请求;网络数据接口设计不合理;没有设置网络数据缓存;网络请求的图片没有做缓存处理;创建过多的不必要对象,造成频繁GC等。   2.2 APP架构设计   采用MVC设计模式,逻辑业务,数据和视图层分离。这样在后期改进和个性化定制时不需要重新编写业务逻辑。网络请求框架采用谷歌自己的框架Volley。Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮。Volley提供JSON,图像等的异步下载;网络请求的排序(scheduling);网络请求的优先级处理;缓存,多级别取消请求,和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)。   2.3 Android优化方案设计   在APP的程序中Application里创建一个全局网络负载请求线程池,用于管理整个APP的网络请求,并进行优先级排序处理。单例模式,保证APP全局只有一个网络请求实例,避免创建过多对象,无法管理,耗费系统资源。网络线程池开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。   优先级请求排序策略。设置线程池的核心线程数和最大线程数。所有 BlockingQueue 都可用于传输和保持提交的任务。可以使用此队列与池大小进行交互:如果运行的线程少于 corePoolSize,则 Executor 始终首选添加新的线程,而不进行排队;如果运行的线程等于或多于 corePoolSize,则 Executor 始终首选将请求加入队列,而不添加新的线程;如果无法将请求加入队列,则创建新的线程,除非创建此线程超出 maximumPoolSize,在这种情况下,任务将被拒绝。   网络请求及时回收,与Activity同生命周期控制。在APP的全局Application里暴露一个添加和关闭回收网络请求的List,用来及时的维护和销毁网络负载请求。这样如果一个Activity停止的时候,同时取消所有或部分未完成的网络请求。这样就做到了多级别取消请求和Activity和生命周期的联动。   合理的数据库接口对接设计。在不影响数据库请求效率和负载的

文档评论(0)

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

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

1亿VIP精品文档

相关文档