binder
2016-12-06 11:41:14 5 举报
Android 中 binder机制的分析
作者其他创作
大纲/内容
Proxy
一般由S端的onBinder返回一个Stub类型的IBinder--绑定service--然后C端调用此方法,将IBinder对象传入
内部只提供了asBinder()方法 用来返回一个IBinder对象
OnTransact会调用Stub中的抽象方法而这个抽象方法正是S.实现的
asInterface——需要传入一个IBinder(类型为stub)对象,同进程则返回stub本身,异进程则返回一个Proxy对象
Binder
impl
构造函数传入IBinder对象
构造函数
调用binder中的attachInterface接口,将自己存到binder的全局变量中
传入Stub类型的IBinder
内部代理类
S. 通过OnBinder将Stub类型的IBinder然后传给C.
AIDL中的抽象方法会调用Stub中的Ontransact方法
asBinder返回自身实例
IIntenface(接口)
asBinder()——返回传入的IBinder对象
impl接口
ex
此方法运行在S.Binder的线程池中,当C请求时,会经过底层代码封装后返回给此方法
简化后流程如下
C.调用asInterface获取Proxy对象然后调用AIDL中的抽象方法
既然实现了此接口就必须重写asBinder()方法,同时它还ex了Binder,这样asBind()方法就可以返回自己
调用AIDL中定义的方法即service中实现的Stub的抽象方法
AIDL接口定义的方法由构造函数传入的Stub类型的IBinder对象来调用OnTransact方法
IBinder
Stub
AIDL(接口)
0 条评论
下一页