3. AIDL与Proxy-Stub设计模式

本文深入探讨了Android中的IPC通信机制,重点介绍了Proxy-Stub设计模式及其在实现 Binder 中的角色。通过复习IBinder接口,阐述了其一般用途,并通过代码实战展示了如何在Activity中使用BroadcastReceiver以及Binder线程中的操作。进一步讨论了如何包装IBinder接口,以及Proxy和Stub类的编写。最后,详细解释了AIDL(Android Interface Definition Language)工具在生成Proxy和Stub类中的作用,它简化了跨进程通信的复杂性,将IBinder接口转换为用户自定义接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 myBinder代码实战

下面的代码实在binder thread中执行的。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

step1: Activity -> Service: oncreate()
step2: Service -> new myBinder and create a new thread
step3: myActivity -> myBinder : ontransact()

3. 包装IBinder而接口(如何写Proxy及Stub类)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 谁来写Proxy类和Stub类呢?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. AIDL工具(谁来写Proxy及Stub类)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

类别模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

详解AIDL

在这里插入图片描述

实际采用的适配器的模式,将IBinder接口转换成用户自己定义的接口。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Proxy主要承担了编码的作用,同时还需要实现客户自定义的接口。

Stub主要承担了解码的作用,同时还需要实现客户自定义的接口。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021、小林子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值