当我在为fetion client工作时,我那个时候逐渐意识到消息处理框架的重要性和设计的精妙,现在在Android中,Service已经是 一个非常重要的组件(one of Application Fundamentals),而且Android的Service Framework设计的更为精妙,这使得我更有兴趣去研究它。
读了一些Service Framework代码之后,我回过头去看这两篇文章(
IPC框架分析 Binder,Service,Service manager,
Service深入分析),感觉又有新的理解。
首先是从观念上的改变。思考我过去的软件行为,最多的是为了实现某个功能、达到某个效率、解决某个问题去看事情,这种做法我现在看来非常具有局限性(而这一点在我阅读了
冷冰的几篇博文尤为深刻),冷冰的博文提供了一种思路,蕴含一种哲学意味的思想,我虽然不能很理解,但是就目前而言,这些文章的警醒作用是很明显的:我开始纠正自己思维方式(为了这个问题,曾经在javaeye上提问,得到了一些有建设性的意见),我开始关注一些在之前看起来有点遥远的东西比如说架构图、类图、流程图等等,我开始使用uml工具帮助自己理解一些软件设计模式,我开始动手总结自己的认知与疑问(写博客),等等。尤其是最近,当我经过努力,认识到自己以前所未能认识到的一些知识(像设计者的意图、类图、巧妙之处、精彩之处、自己设计的方法跟牛人设计之间的差距等等),我真的体会到了喜悦,而这种喜悦又督促我去理解更多。总之,从设计者的角度去考量他人的作品,将收获更多超越使用者的认知与乐趣,一件件软件作品、架构,那真的是一件件思想的瑰宝,蕴含着无数深思熟虑和未雨绸缪,总是有挖掘不完的东西在里面。
接着来看具体的Service框架。
分析Service框架时始终把下面两张图放在脑海里(前一张来自Service本质框图,后一张来自冷冰对Android Service的分析框图):
Service本质框图
冷冰分析的Android Service框图
另外带着几个问题去看(出自冷冰博文):
1.闭合循环结构放置在哪里?
2.处理请求是如何分发和管理?
3.处理光加是如何建立的?
4.概念框架是如何建立的?
看了一下午的Service相关的源码,总体感觉是明白了一半,迷糊一半。IPC的东西因为之前没接触过,所以一时半会理解不全,但是对于Service架构我现在有了深入一些的理解,而冷冰的博文以及他提出的问题也逐渐解答了我的不少疑问。
我在看Service框架时,一直以为Service框架没有闭合循环结构来处理请求,但是根据冷冰的分析,Service的闭合循环结构是在c++空间的(对于只懂java的我来说是有点难找,~(>_<)~ ),拿跨进程Service为例,AIDL描述了客户端与Service之间通讯的接口,通讯的数据体在java空间中是要实现Parcelable接口的,IBinder、Binder这些概念已经接近linux底层。假如多次接口(AIDL生成的接口)中定义方法的调用,还是会被加入到Service在c++空间中的消息处理队列中,由c++代码去处理这些请求。我在理解这些概念的时候一直疑惑于Handler(本来我一直认为Service是没有消息处理结构的,所以Handler与Service结合为Service添加消息处理结构就变的理所应当),而Service自身有存在消息处理结构,那么Handler的存在是什么意义呢?想了好久,才发现,Handler是一个通用的消息处理框架,任何想用循环队列这种方式处理请求的组件或者其它都可以使用Handler为自己轻松构建这样一套处理结构(之前我在fetion client看到的消息处理框架与这个类似,虽然这算不上什么很难的功能,但是在高要求下维护起来还是会小头疼,除非你自认为能写出比google程序员更好的代码),而不少代码设计已经证明,这的确很通用(Broadcast、EventHandler等神马的东东都可以用嘛),也更灵活且易于维护需求代码而不是框架代码本身。
关于Service框架的其它深入的信息,我还会再补充。
分享到:
相关推荐
Android sensor service framework
在这个详细分析中,我们将深入探讨Android Framework的架构、主要组件及其工作原理,帮助开发者更好地理解和利用这个强大的平台。 一、Android Framework概述 Android Framework是基于Java语言构建的,它提供了...
对于Android服务框架的理解,书中通过分析经典面试题,如Binder、Handler、AMS的工作原理,帮助读者巩固和深化对这些关键组件的理解。Binder是Android系统中实现跨进程通信的关键组件,而Handler则在UI线程和其他...
《Android Framework 开发揭秘》是腾讯技术团队倾力打造的一部深入探讨Android系统框架底层原理的专业书籍。本书针对Android开发者,尤其是对系统级开发有深厚兴趣的工程师们,旨在揭示Android系统的神秘面纱,帮助...
本篇内容将深入探讨Android Framework层的源码分析,帮助你理解这一关键层次的工作原理。 1. **系统启动流程** - Android系统的启动始于Zygote进程,它预先加载了大部分核心库,为其他进程提供快速孵化的基础。 -...
《Android Framework精编内核解析》是一本深入探讨Android系统核心框架层的专著,它...这本书的内容可能涵盖了这些主题的详细讲解,包括源码分析、实战案例和最佳实践,对于Android开发者来说是一份宝贵的参考资料。
### Android Framework 详细分析 #### 一、设计意图与研究方法论 在开始对Android框架进行深入探索之前,我们首先要明确为什么要研究Android及其框架层。Android不仅是一个移动操作系统,更是一个集成了各种技术和...
了解和分析Android系统的工作原理以及它的框架结构对于开发高质量的应用程序至关重要。本文将根据提供的文件信息,详细阐述Android系统各个组件的原理和功能。 首先,Android是一个基于Linux内核的开源操作系统,它...
《字节面试Android11.0最新Framework解析》是一份专为程序员面试准备的资料,主要聚焦于Android系统的深层机制,特别是针对Android 11.0版本的Framework层进行了深入剖析。Framework是Android系统的核心部分,它定义...
1.初探Android 2.Android开发环境搭建与编译 3.Android编译过程分析 4.android.mk初识 5.Android.mk学习1 6.Android.mk学习2 7.Android.mk学习3 ...26.SensorService分析 27.SensorHal分析 28.Android_inpu
9. **开发者工具**:例如Android Studio中的各种调试工具,如DDMS(Dalvik Debug Monitor Service)、Hprof内存分析工具等,都与Framework层紧密相关。 在学习和研究Android Framework时,开发者通常会涉及到AOSP...
### Android Framework Camera模块详解 #### 一、Android Camera模块概述 Android系统中的Camera模块是一个重要的组成部分,主要用于处理视频输入功能。该模块被设计为一个框架层(framework),旨在支持多种不同...
`framework.jar`是Android系统的一个关键组件,包含了Android Framework的类库,包括Activity管理、Intent机制、BroadcastReceiver、Service、ContentProvider、View体系等核心功能。这个文件对于系统开发者和进行...
通过对 Android Framework 的详细分析,我们可以更深刻地理解 Android 操作系统的架构设计和技术特点。从设计者的意图出发,通过抽象思考和逐步深入源代码,我们可以更好地把握 Android 的精髓所在。无论是对于初学...
通过学习和分析这份最新的Android Framework源码,开发者不仅可以提升对Android系统底层机制的理解,还能在遇到问题时更快速地定位和解决问题,从而提高软件开发的效率和质量。同时,这也为定制Android系统、优化...
Android Framework是Android操作系统的核心组成部分,它是开发者构建应用程序的平台。这个框架包含了大量Java类库,提供了许多API,使得开发者能够创建功能丰富的Android应用。`framework_intermediates-classes-...
《Android Framework深度剖析》 Android Framework是Android操作系统的核心组成部分,它是Android应用开发的基石,为开发者提供了丰富的API接口,使得应用程序能够与系统服务、硬件设备进行交互。本篇将深入探讨...