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