AIDL流程整理

AIDL流程整理,不涉及Binder的通信原理


XMind导出文字

1、client通过bindService连接到remoteService

2、service在onBind方法中实例化Stub,并返回这个实例对象iBinder

3、client通过onServiceConnected的参数service,调用Stub.asInterface(service)方法,获取服务端的代理Proxy

4、client具体调用方调用Proxy提供的接口方法。【注意】Proxy中并没有真正实现接口,而是将传参data、返回值reply、方法标识打包,然后调用mRemote的transact方法,从而进入Stub的onTransact方法,这是client进入阻塞状态(同步状态下)

5、service的stub实例在onTransact方法中收到Proxy发送的请求,根据方法标识,决定需要执行的方法

6、从接收参数的data中获取业务参数,执行实例对象iBinder中真正的接口业务方法,将业务方法执行后的结果放入接收参数的reply中,onTransact方法执行完成后,返回staus,service端进入阻塞状态

7、client激活,Proxy接收到mRemote返回的状态status,获取reply中的返回值,将返回值返回给client具体的调用方。【至此跨进程通信完成】

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

推荐阅读更多精彩内容