Proxy
首先看一下aidl的gen的代码:
这个是我们获得server binder对象的代码,从这段代码可以看出来client和server交互的时候其实是和server在本地的proxy进行交互的;
在我们调用asInterface(service)的时候实际上是在本地创建了一个代理;
下面看一下proxy的定义:
上面是server的proxy的定义,从总可以看到执行核心方法就是mRemote.transact,这个执行就是Binder的onTranct方法,用于进程间的通信使用(后续会详细讲解);
大体的调用架构如下:
Stub
下面来看看stub的定义,从代码中可以看出来,stub是继承与binder同时对我们定义的接口进行了定义,因此stub的作用就是将我们定义的服务翻译成Binder能够识别的语言。