Android跨进程通讯机制Binder 之我的理解

IBinder接口:

代表一种跨进程传输的能力,实现这个接口,就能将这个对象进行跨进程传递

    transact()方法:(做交易)向远端的IBinder对象发出调用

Binder类:(IBinder接口 的实现类)

是Binder本地对象

    onTransact()方法:使你自己的远程对象能够响应接收到的调用(响应transact方法发出的调用)

IInterface接口:(client端与server端的调用契约)

    asBinder()方法:可以将Binder本地对象或代理对象进行返回

自己写的IMyAidlInterface接口 extends IInterface(接头人)

代表远程server对象具有什么能力。

IMyAidlInterface 的抽象内部类Stub(票根)

继承Binder,asBinder()方法就返回它。

    asInterface(IBinder obj)方法:根据调用是否属于同进程而返回不同的实例对象

    根据传入的参数IBinder,查找Binder本地对象(queryLocalInterface),如果找到,就是同一进程,返回IMyAidlInterface。如果没找到,就不是同一进程,返回Stub里面的代理类:new IMyAidlInterface.Stub.Proxy(obj)。

要真正干活,得实现这个stub

Stub 的IMyAidlInterface内部实现类 Proxy( Stub 的代理人,代理人拿着票根,去服务端找真正干活的人)

因为实现了IMyAidlInterface(继承自IInterface),所以覆盖asBinder()方法,返回一个远程的IBinder

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

推荐阅读更多精彩内容