Binder,英文意思是别针,回形针。在Android中,它是用于完成进程间通信(IPC),在它的官方网站上是这样定义的。binder是一个分布式的组件架构,它类似于COM和CORBA。
binder 通信是一种client-server 的通信结构,
1. 从表面上来看,是client 通过获得一个server 的代理接口,对server 进行直接调用;
2. 实际上,代理接口中定义的方法与server 中定义的方法是一一对应的;
3.client 调用某个代理接口中的方法时,代理接口的方法会将client 传递的参数打包成为Parcel 对象;
4. 代理接口将该Parcel 发送给内核中的binder driver.
5.server 会读取binder driver 中的请求数据,如果是发送给自己的,解包Parcel 对象,处理并将结果返回;
6. 整个的调用过程是一个同步过程,在server 处理的时候,client 会block 住。
Binder是一种架构,这种架构提供了服务器端接口,Binder驱动,客户端接口三个模块。
Binder服务器:
Binder服务器实际上是一个Binder对象,该对象一旦创建,就启动了一个隐藏线程,该线程不断的接受Binder驱动所发回的消息,收到消息后,执行Binder对象中的onTransact()
方法。因此,要实现一个Binder服务器,就必须重载onTransact()方法。
Binder驱动:
Binder服务器端的Binder对象创建时,就会在Binder驱动中创建一个mRemote对象,该对象也是Binder类。客户端要访问Binder服务器时,都需要见过该mRemote对象.
Binder客户端:
Binder客户端要想访问服务器,必须先获取mRemote对象,然后通过mRemote对象的transact()方法调用。Binder驱动重载了该方法,重载的内容有:
1.以线程间消息通信的模式,像服务器端发送客户端传过来的参数。
2.挂起当前线程(客户端线程),等待服务器端执行完后的通知(notify)。
3.接收服务器端的通知,然后继续执行客户端线程,并返回到客户端代码区。
由此可见,客户端要调用服务器端的binder,必须通过binder驱动进行中转,即存在两个Binder对象,一个服务器端的Binder对象,一个驱动中的Binder对象,不同的是驱动中的Binder对象不会再额外产生一个线程。
下一章介绍下Binder服务器的实现
- 大小: 62.4 KB
分享到:
相关推荐
android系统深入浅出binder机制分析
本文档详细解说了从MediaPlayerService的创建,到其Binder机制的实现,BnMediaPlayerService与BpMediaPlayerService之间的关系,Binder客户端如何与服务端进行通信。希望对你们有所帮助。
例子源码 博文链接:https://null-point.iteye.com/blog/1447646
android2.3源码-binder机制.doc 对binder机制的详细分析
binder 机制分析, 主要讲了binder的三个服务,client server servermanager 三个服务之间是如何工作的,servermanger如何成为server的守护进程,讲解非常透彻 当然了资源也是转别人的 希望对您有帮助
Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来...
Android系统进程间通信Binder机制在低层的C++接口源代码文件分析
邓凡平博客Android深入浅出之Binder机制的pdf版,从源码分析Android的Binder机制 值得学习。
binder是Android framework进程间通信机制。对android binder进行一部分的分析。
ANDROID系统进程间通信BINDER机制在低层的C接口源代码文件分析[归纳].pdf
这些问题只是了解binder机制是不够的,需要从Android的整体系统出发来分析,在我找了很多资料后,真正的弄懂了binder机制,相信看完这篇文章大家也可以弄懂binder机制。要理解binder,先要知道IPC,Inter-process...
一.简要介绍和学习计划 二.Service Manager 成为Binder 守护进程之路 三.Server 和Client 获得Service Manager 接口之路 四.Server 启动过程源代码分析 五.Client 获得Server 远程接口过程源代码分析 六.应用...
Android进程间通信(IPC)机制Binder简要介绍和学习计划
通过自动生成的AIDL文件来分析Binder工作机制流程
核心分析之一 ----- 分析方法论探讨之设计意图 核心分析之二 ----- 方法论探讨之概念空间篇 核心分析之三 ----- 手机之硬件形态 核心分析之四 ----- 手机之软件形态 核心分析之五 ----- 基本空间划分 核心分析之六 -...
Android系统进程间通信Binder机制在低层的C++接口源代码文件分析[归类].pdf
Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析[归纳].pdf