读书笔记:android设计与实现第三…

Binder机制:
Android使用了Linux的进程管理机制,以进程为单位分配虚拟地址空间,为了安全考虑,一个进程禁止直接与其他进程交互,这样不同进城之间是相互隔离的,如果进程间需要通信,必须通过android的linux内核提供的进程间通讯机制实现间接通信。linux使用的进程间的通信方式有很多种:Socket,Signal,Pipe,MessageQueue,Semaphore,SharedMemory等,但是以上的机制要么效率低,要么不适合封装给上层复用,因此在android中使用的是Binder机制。
binder是对Linux内核层的一个扩展,属于一个字符设备驱动,android通过这个驱动实现不同进程之间的间接通讯,Android通过对Binder封装,提供了一套Binder操作的框架,便于上层使用,这样Binder的概念便不仅是一个驱动,而是被扩展为一种架构,binder架构分为Native层和Java层两部分。
应用框架层为应用开发都提供了Android四大组件,四大组件是由Java代码实现,不同的组件可以位于不同的进程中,不同的进程需要交互时,需要用到Binder通信。Binder在Java框架层的应用不仅限于四大组件换交互,在四大组件中也可以通过应用框架层提供的getSystemService接口直接使用Java系统服务。。

Binder换java框架层和Native框架层一样,具备C/S体系结构的主要组成部分:Client,Proxy,Stub,Server和Service。Java框架层没有提供类似Native框架层的servicemanager,而是通过JNI将Native框架层的servicemanager在Java框架层的代理,此外,Java框架层通过JNI将Native框架层换BpBinder和BBinder封装为Java对象,供Java框架层使用,为了便于Java框架开发系统服务,要jav框架层中提供了AiDl工具,用于生成统一的Proxy和Stub接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章