面试的时候,面试官问你说,简单说一下Android的Binder机制,你会怎么回答?
我想,我会这么说。
在Android启动的时候,Zygote进程孵化出第一个子进程叫SystemServer,而在这个进程中,很多系统提供的服务,比如ActivityManagerSerivce, PowerManagerService等,都在此进程中的某一条线程上运行。
而很多用户开发的应用程序,也就是我们常说的APP,基于安全的考虑,在安装到系统中的时候,都会被分配一个独特的UID,运行在一个单独的进程中。
基于Linux的用户安全机制,它们是没有办法直接访问到上述系统服务的。
但是在实际中,App很多时候是需要跟这些系统服务进行通信的,也就是要进行进程间通信。
而Binder机制则是Android系统实现进程间通信(IPC)的机制之一。
面试官可能还会问,那么Binder机制是怎么实现的呢?
我觉得,要想知道Binder机制是怎么实现的,首先要知道下面四个概念:
1)Server
2)Client
3)ServiceManager
4)Binder驱动
Server和Client无需多说,我们只需要知道一个是用来提供服务的,一个是获取服务的,并且分别运行在不同的进程当中。
那么ServiceManager是用来干什么的呢?
在前面一篇文章,关于Android的启动过程中,我们有提到,ServiceManage