AIDL 简介

Android Interface Description Languaged。用于描写 客户端/服务端通信接口的一种描述语言
AIDL 的原理其实就是使用了 代理模式Binder 的使用进行了优化,使用 AIDL 保证了代码的整洁,同时也省去了自己编写繁琐的代理类相关代码

AIDL 使用

新建AIDL文件

右键 new 一个 AIDL 类型的文件,并命名为 ICalculator
notion image
notion image

添加接口函数

服务端实现

客户端中调用

AIDL 的生成文件

通过上面的例子,从文件的调用上来看,就跟我们自己定义的普通接口一样,只不过创建的时候是通过 AIDL 的形式创建,为什么就能实现在 Service 和我们的应用 Activity 之间的通信呢?原因就在于,Android Studio 自动为我们生成了一些代码,下面来看看其代码长什么样(自动生成的代码为 build or generated 文件夹下)
可以看到,虽然我们定义的 AIDL 文件很简单,但是自动生成的文件却很复杂,重点看名为 Stub 的内部类,其继承自 Binder,还实现了 ICalculator 接口,正是因为自动生成的这些操作,才使得我们通过 AIDL 实现通信变得简单

参考/推荐

Loading...