AIDL的proxy/Stub原理

Proxy

首先看一下aidl的gen的代码:

Paste_Image.png

这个是我们获得server binder对象的代码,从这段代码可以看出来client和server交互的时候其实是和server在本地的proxy进行交互的;
在我们调用asInterface(service)的时候实际上是在本地创建了一个代理;
下面看一下proxy的定义:

Paste_Image.png

上面是server的proxy的定义,从总可以看到执行核心方法就是mRemote.transact,这个执行就是Binder的onTranct方法,用于进程间的通信使用(后续会详细讲解);

大体的调用架构如下:

Paste_Image.png

Stub

下面来看看stub的定义,从代码中可以看出来,stub是继承与binder同时对我们定义的接口进行了定义,因此stub的作用就是将我们定义的服务翻译成Binder能够识别的语言。

参考:http://chenfeng0104.iteye.com/blog/1255302

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容