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

你可能感兴趣的:(Android跨进程通讯机制Binder 之我的理解)