1 前言
Binder通信机制是Android中很重要的一个概念,贯穿整个Android系统。因此无论是作为一个Android系统开发者还是App开发者,都应该重点掌握。关于Binder机制的博客文章,网上都很多了,很多写的也比较好。因此本系列仅仅作为深入掌握Binder的一个学习笔记。废话不多少,开始吧。
2 Binder通信整体框架
Binder通信的整体框架如下图:
上面只是Binder通信的一个简图,大体的讲解了Binder通信涉及到的角色。
可以看到,Binder通信是一个典型的C/S架构,一共有四个角色Client、Server、ServiceManager以及binder驱动。各个角色的作用如下:
Client:客户端,获取和使用服务的的对象,例如,在Android系统中,我们常常用Context#getSystemService(@ServiceName @NonNull String name)获取的就是一个Client,例如ActivityManager,WindowManager等都是一个Client。
Server:服务提供商,主要为客户端提供各种服务,例如常见的ActivityManagerService,WindowManagerService等。这些服务往往是管理整个Android系统的各种功能,是Android Framework层的核心。
ServiceManager: ServiceManager用于管理系统中的各种服务,因为Android系统功能很强大,往往有几十个服务,因此需要一个统一的服务管理者来管理。
Binder驱动: Binder通信的底层载体和支撑。Binder驱动支撑着整个Binder IPC过程,它是Binder实现IPC的基础,对于一般APP开发者来说,了解的少。但是它却有很大的作用,因此仍然需要了解。
3 Binder通信机制要点
个人觉得,要掌握Binder通信,可以从以下几个方面来掌握
1 Android 中使用Binder的原因
2 Binder驱动与协议
3 ServiceManager如何管理服务
4 Server如何注册服务
5 Client如何获取服务和使用服务
6 Binder 线程池工作过程
这每一个小点,都打算写一篇博客来分析,后续的博客打算逐步更新。
暂时写这么多吧,后续根据实际情况增加