1Binder是什么?
Binder是Android系统提供的一种IPC(进程间通信)机制。由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等。Binder相对于其他IPC机制来说,就更加灵活和方便了。Android系统基本上可以看作是一个基于Binder通信的C/S架构。Binder就像网络一样,把系统各个部分连接在了一起,因此它是非常重要的。
2Client、Server和ServiceManager这三者之间的交互关系是什么?

说明:
(1)Server进程要先注册一些Service到ServiceManager中,所以Server是ServiceManager的客户端,而ServiceManager就是服务端了。
(2)如果某个Client进程要使用某个Service,必须先到ServiceManager中获取该Service的相关信息,所以Client是ServiceManager的客户端。
(3)Client根据得到的Service信息建立与Service所在的Server进程通信的通路,然后就可以直接与Service交互了,所以Client也是Server的客户端。
(4)最重要的一点是,三者的交互都是基于Binder通信的,所以通过任意两者之间的关系,都可以揭示Binder的奥秘。
3Binder通信与C/S架构之间的关系是什么?
Binder只是为C/S架构提供了一种通信的方式,我们完全可以采用其他IPC方式进行通信,例如,系统中有很多其他的程序采用的就是Socket或Pipe的方法进行进程间通信。
3穿越魔术的道具就是BpBinder

说明:
(1)BpBinder是客户端用来与Server交互的代理类,p即Proxy的意思。
(2)BBinder则是proxy相对的一端,它是proxy交互的目的端。如果说Proxy代表客户端,那么BBinder则代表服务端。这里的BpBinder和BBinder是一一对应的,即某个BpBinder只能和对应的BBinder交互。我们当然不希望通过BpBinderA发送的请求,却由BBinderB来处理。
4Binder通信和基于Binder通信的业务之间的关系是什么?
(1)Binder是通信机制。
(2)业务可以基于Binder通信,当然也可以使用别的IPC方式通信。
5Binder通信层和业务层的关系是什么?

6ServiceManager存在的意义是什么?
(1)ServiceManger能集中管理系统内的所有服务,它能施加权限控制,并不是任何进程都能注册服务。
(2)ServiceManager支持通过字符串名称来查找对应的Service。这个功能很像DNS。
(3)由于各种原因,Server进程可能生死无常。如果让每个Client都去检测,压力实在太大。现在有了统一的管理机构,Client只需要查询ServiceManager,就能把握动向,得到最新信息。