欢迎来到天天文库
浏览记录
ID:20958361
大小:1023.05 KB
页数:30页
时间:2018-10-18
《android组件设计思想》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android组件设计思想--Everythingiscomponent罗升阳http://weibo.com/shengyangluohttp://blog.csdn.net/luoshengyangAboutMe《老罗的Android之旅》博客作者《Android系统源代码情景分析》书籍作者博客:http://blog.csdn.net/Luoshengyang微博:http://weibo.com/shengyangluoAgenda组件化背景组件化设计组件化支持一个小实验Background从PC客户端应用程序说起开发者角度复杂,同时兼顾UI、交互
2、和业务逻辑运行载体是进程进程只有一个入口点—main使用者角度流畅的UI、友好的交互、正确的结果不知进程是何物Backgroundcont.PC客户端应用程序开发的任务满足用户的需求降低程序复杂度--组件化Backgroundcont.PC客户端应用程序组件化之后开发者角度运行载体仍然是进程进程仍然是只有一个入口点—main使用者角度流畅的UI、友好的交互、正确的结果不知进程是何物Backgroundcont.结论应用程序组件化前后,用户对其运行载体(进程)没有概念,但是开发者来说,组件化后的应用程序仍然是和进程直接关联的,也就是说,进程一旦不存在,程序和
3、组件也随之灰飞烟灭!Backgroundcont.再说移动客户端应用程序与PC客户端应用程序一样,包含UI、交互和业务等复杂逻辑与PC客户端应用程序一样,用户的需求是流畅的UI、友好的交互、正确的结果运行在低频率CPU、小容量内存、小面积屏幕设备上Backgroundcont.设备特性对移动客户端应用程序的影响低频率CPU影响程序运行速度,尤其是程序启动速度,因为用户对程序启动时间最为敏感小容量内存影响同时运行的程序的数量,而且系统会在内存紧张时杀进程,以便回收内存小面积屏幕单窗口操作模式,导致用户需要频繁地切换程序或者重新打开程序Backgroundco
4、nt.移动客户端应用程序开发的任务满足用户的需求降低程序复杂度Backgroundcont.组件化是降低移动端应用程序复杂度的不二选择,但需进一步考虑以下两个事实:设备特性的影响系统杀进程时,被杀进程里面的组件如何处理?程序切换和重新打开时,如可提高程序启动速度?用户不关心进程是否可以将组件与进程进行剥离?Design基本思想Everythingiscomponent具体实现程序由组件组成组件与进程剥离组件皆程序入口Designcont.程序由组件组成Activity:前台交互Service:后台计算BroadcastReceiver:广播通信Conten
5、tProvider:数据封装Designcont.组件与进程剥离组件关闭时,进程可以继续存在提高重新启动时的速度进程关闭时,组件可以继续存在保护被杀进程里面的组件Designcont.组件皆程序入口Activity--onCreateService--onCreateBroadcastReceiver--onReceiveContentProvider--onCreateDesigncont.将组件与进程进行剥离,使得进程对组件透明,听起来很好,但是如何解决以下四个问题?谁来负责组件的启动和关闭?谁来维护组件的状态?谁来管理组件运行时所需要的进程?组件之间
6、如何进行通信?Infrastruction操作系统级别的组件化支持ActivityManagerServiceBinderLowMemoryKillerInfrastructioncont.ActivityManagerService启动组件组件启动时,检查其所要运行在的进程是否已创建。如果已经创建,就直接通知它加载组件。否则,先将该进程创建起来,再通知它加载组件。关闭组件组件关闭时,其所运行在的进程无需关闭,这样就可以让组件重新打开时得到快速启动。维护组件状态维护组件在运行过程的状态,这样组件就可以在其所运行在的进程被回收的情况下仍然继续生存。进程管理在
7、适当的时候主动回收空进程和后台进程,以及通知进程自己进行内存回收Infrastructioncont.Binder为组件间通信提供支持进程间进程内高效的IPC机制进程间的组件通信时,通信数据只需一次拷贝进程内的组件通信时,跳过IPC进行直接的通信Infrastructioncont.LowMemoryKiller内存紧张时回收进程由于组件与进程是剥离的,因此进程回收不会影响组件的生命周期从低优先级进程开始回收EmptyProcessHiddenProcessPerceptibleProcessVisibleProcessForegroundProcessE
8、xperimentExperimentcont.Experimen
此文档下载收益归作者所有