Android插件化开发学习笔记
Binder的目的是解决跨进程通信。
1、Binder分为Client 和 Server 两个进程。
Client 和 Server是相对的,谁发消息,谁就是client,谁接收消息,谁就是Server。
2、Binder的组成
ServiceManager负责把Binder Server注册到一个容器中
3、Binder的通信过程
首先:Server在SM容器中注册
其次:Client若要调用Server的add方法,就需要先获取Server对象,但是SM不会把真正的Server对象返回给Client, 而是把Server的一个代理对象,也就是Proxy,返回给Client
再次:Client调用Proxy的add方法,ServiceManager会帮他去调用Server的add方法,并把结果返回给Client
以上3步,Binder驱动出了很多力,但我们不需要知道Binder驱动的底层实现,这涉及C或C++的底层。
综上所述:
1、学习Binder是为了更好地理解AIDL,基于AIDL模型,进而了解四大组件的原理。
2、理解了Binder再看AMS和四大组件的关系,就像是Binder的两个进程Server和Client通信