Android笔记---Binder

Binder是Android中使用最广泛的IPC机制,用于进程间通讯。通过计算机网络的概念,可以将Binder机制的各个元素进行一下映射:
- Binder 驱动—路由器
- Service Manager—DNS
- Binder Client—客户端
- Binder Server—服务器

Binder的原理可以概述为,进程1(客户端)希望与进程2(服务器)互相访问,但是由于跨进程(跨网络),所以需要借助Binder驱动(路由器)把请求正确投递到对方所在进程(网络),参与通信的进程需要持有Binder“颁发”的而已标志(IP地址),而Service Manager就是DNS映射器。

Android笔记---Binder_第1张图片

Client:服务的调用者,应用程序中,可以通过List packs = getActivity().getPackageManager().getInstalledPackages(0);来向ServiceManager请求服务。
Server:服务提供者,提供很多常用服务,如ActivityService、WindowManager,这些系统服务,能够让我们使用WiFi,display等等。
Service Manager:类似于网络中的DNS,绝大多数的服务都是通过Service Manager来获取,通过这个DNS来屏蔽掉对其他server的直接操作。
Binder Driver:底层的支持逻辑,承担路由的作用。

应用程序(Client) 首先向 Service Manager 发送请求 WindowManager 的服务,Service Manager 查看已经注册在里面的服务的列表,找到相应的服务后,通过 Binder kernel 将其中的 Binder 对象返回给客户端,从而完成对服务的请求。

你可能感兴趣的:(Android系统学)