IPC的Proxy-Stub设计模式
1、复习IBinder接口2、IBinder接口的一般用途
2.1 myActivity代码实战2.2 myBinder代码实战 3、包装IBinder而接口(如何写Proxy及Stub类)4、谁来写Proxy类和Stub类呢?5、AIDL工具(谁来写Proxy及Stub类)
类别模板详解AIDL IPC的Proxy-Stub设计模式 1、复习IBinder接口
单层框架图:
两层框架:
对于App而言,只能看到上层的op接口,但是看不到fun()接口了。
改变了t的实现接口:
App还是需要直接访问interface接口,并没有完全的隔离开来。
改进的版本:
建立了中间的曹操类。
2、IBinder接口的一般用途对于上述的代码中,开发者需要编写额外的代码,加重了开发者的负担。
本单元没有用“proxy-stub” -> 下单元采用“proxy-stub” -> AIDL
从Binder thread pool中选择一个线程执行service中的代码。
2.1 myActivity代码实战 在 myActivity 中创建一个 BroadcastReceiver
下面的代码实在binder thread中执行的。
step1: Activity -> Service: oncreate()
step2: Service -> new myBinder and create a new thread
step3: myActivity -> myBinder : ontransact()
实际采用的适配器的模式,将IBinder接口转换成用户自己定义的接口。
Proxy主要承担了编码的作用,同时还需要实现客户自定义的接口。
Stub主要承担了解码的作用,同时还需要实现客户自定义的接口。