- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
andoird 核心分析之ipc框架分析 binder,service,service manager
IPC 框架分析 Binder,Service,Service manager我首先从宏观的角度观察 Binder,Service,Service Manager,并阐述各 自的概念。从 Linux 的概念空间中,Android 的设计 Activity 托管在不同的的 进程,Service 也都是托管在不同的进程,不同进程间的 Activity,Service 之间要交换数据属于 IPC。Binder 就是为了 Activity 通讯而设计的一个轻量级的IPC 框架。在代码分析中,我发现 Android 中只是把 Binder 理解成进程间通讯的实现, 有点狭隘,而是应该站在公共对象请求代理这个高度来理解 Binder,Service的概念,这样我们就会看到不一样的格局,从这个高度来理解设计意图,我们才 会对 Android 中的一些天才想法感到惊奇。从 Android 的外特性概念空间中,我们看不到进程的概念,而是 Activity,Service,AIDL,INTENT。一般的如果我 作为设计者,在我们的根深蒂固的想法中,这些都是如下的 C/S 架构,客户端和 服务端直接通过 Binder 交互数据,打开 Binder 写入数据,通过 Binder 读取数 据,通讯就可以完成了。该注意到 Android 的概念中,Binder 是一个很低层的概念,上面一层根本都 看不到 Binder,而是 Activity 跟一个 Service 的对象直接通过方法调用,获取 服务。这个就是 Android 提供给我们的外特性:在 Android 中,要完成某个操作, 所需要做的就是请求某个有能力的服务对象去完成动作,而无需知道这个通讯是怎样工作的,以及服务在哪里。所以 Andoid 的 IPC 在本质上属于对象请求代理 架构,Android 的设计者用 CORBA 的概念将自己包装了一下,实现了一个微型的 轻量级 CORBA 架构,这就是 Andoid 的 IPC 设计的意图所在,它并不是仅仅解决 通讯,而是给出了一个架构,一种设计理念,这就是 Android 的闪光的地方。A ndroid 的 Binder 更多考虑了数据交换的便捷,并且只是解决本机的进程间的通 讯,所以不像 CORBA 那样复杂,所以叫做轻量级。所以要理解 Android 的 IPC 架构,就需要了解 CORBA 的架构。而 CORBA 的架构在 本质上可以使用下面图来表示:在服务端,多了一个代理器,更为抽象一点我们可以下图来表示。分析和 CORBA 的大体理论架构,我给出下面的 Android 的对象代理结构。在结构图中,我们可以较为清楚的把握 Android 的IPC包含了如下的概念:设备上下文什(ContextObject)设备上下文包含关于客服端,环境或者请求中没有作为参数传递个操作 的上下文信息,应用程序开发者用 ContextObject 接口上定义的操作来创 建和操作上下文。Android 代理:这个是指代理对象?BinderLinux 内核提供的 Binder 通讯机制Android 的外特性空间是不需要知道服务在那里,只要通过代理对象完成请 求,但是我们要探究 Android 是如何实现这个架构,首先要问的是在 Client 端要完成云服务端的通讯,首先应该知道服务在哪里?我们首先来看看 Service Manger 管理了那些数据。Service Manager 提供了 add service,check s ervice 两个重要的方法,并且维护了一个服务列表记录登记的服务名称和句柄。Service manager service 使用 0 来标识自己。并且在初始化的时候,通过 bi nder 设备使用 BINDER_SET_CONTEXT_MGR ioctl 将自己变成了 CONTEXT_MGR。S vclist 中存储了服务的名字和 Handle,这个 Handle 作为 Client 端发起请求时 的目标地址。服务通过 add_service 方法将自己的名字和 Binder 标识 handle登记在 svclist 中。而服务请求者,通过 check_service 方法,通过服务名字在 service list 中获取到 service 相关联的 Binder 的标识 handle,通过这个 H andle 作为请求包的目标地址发起请求。我们理解了 Service Manager 的工作就是登记功能,现在再回到IPC上, 客服端如何建立连接的?我们首先回到通讯的本质:IPC。从一般的概念来讲,Android 设计者在 Linux 内核中设计了一个叫做 Binder 的设备文件,专门用来进 行 Android 的数据交换。所有从数据流
您可能关注的文档
- 《电力工程基础》模拟试题五.docx
- 《电阻焊》口试复习题及参考解答.docx
- 《电机拖动》信息化教学设计方案正式版.docx
- 《干部任免审批表》填表说明及审批表.docx
- “五创”创新创业新模式.docx
- 《广告与公关》复习题.docx
- 《高等数学3》2009—2010学年1学期考试卷及答案答案在后面3.docx
- 《化工工程制图》习题册答案.docx
- 《基础会计》-模拟试题(含答案).docx
- 《国际经济学》期末试卷5套..docx
- apqp产品质量先期策划控制程序..docx
- ansi b92.1-1970r1993 sae花键.docx
- apqp解读.docx
- ansi-esdstm97.1-2006地板材料和鞋类-与人员相组合的电阻测量.docx
- aq封-液气两用.docx
- aqxxx-201x煤矿可移动式硬体救生舱能用技术条件.docx
- asme中国制造 asme b18.31.2 2014 continuous thread stud, double end stud, and flange bolting s.docx
- c 程序设计实验辅导及习题解答实验81、3、7和实验9.docx
- astma194a194m2015a高温或高压或高温压螺栓用碳钢,合金钢及不锈钢螺母规范1.docx
- bsh年度审核内容-九大块.docx
文档评论(0)