AIDL旅行记之AIDL的简单使用

来源:互联网 发布:最新翻墙软件 编辑:程序博客网 时间:2024/05/16 05:40

上篇文章中,我们简单介绍了在Android的几种IPC通信方式,以及AIDL的简单分析。还没有阅读的小伙伴猛戳这里哦:AIDL旅行记之开篇AIDL基本介绍

今天我将和小伙伴们一起来探讨在Android中,我们该如何使用AIDL

使用AIDL的流程相对来说比较简单,但是细节的地方还是需要我们注意的。下面一起来看下官方文档为我们提供的创建过程:


从官方文档中,我们可以看出,使用AIDL总共分为了三步:

(1)create .aidl file:即创建AIDL文件

(2)实现Binder接口

(3)实现Service并重写onBind()方法,在该方法中,将我们第二步实现的Bindler返回。

了解了使用AIDL的创建过程,下面我将以Android StudioIDE开发环境为基础,一步一步来实现AIDL的创建。

首先我们实现第一步,创建aidl文件,下面看官方文档的介绍:

 


上面官方文档中,简单说明了第一步的实现流程,我总结以下几点要注意的地方:

(1)在AIDL中,我们可以使用基本数据类型、ListMapStringCharSequence。这里需要注意,官方文档对于这块的描述略为粗略,在AIDL中可以使用基本数据类型,但是Short型的是排除在外的。也就是说,在AIDL中,我们是不可以使用Short型的。

(1)在Aidl中,如果提供的接口需要传入参数,我们必须声明:in,out inout

三种情况分别是:输入参数,输出参数,输入输出参数。

(3)如果使用了自定义的类型(比如自定义了Student类),此时在Aidl文件中,还需要用import将其包含进来。

第二步:实现自定义的接口


图中,我们可以看出,我们在第一步中创建的接口,在Service中需要去实现这个接口,并在ServiceonBind()方法中返回。即上图所示。在接口的方法中,我们就可以实现具体的业务逻辑。

第三步:实现Service,返回我们自定义的Aidl文件接口。


上面3步创建完成后,我们服务端的Aidl就算完成了。

有了服务端,此时我们需要创建客户端,即另一个进程。在另一个进程去访问我们的服务端。

创建客户端,就比较简单了。此处我就简单说下流程:因为要在客户端访问服务端的接口,所以我门首先要将服务端定义的Aidl文件全部复制到客户端的aidl。此处要注意包名不能错。如果我们自定义了类型。此时也需要将自定义的类复制到客户端。基础工作完成后,现在就需要我们去开启Service,此处更准确的说应该是绑定Service。因为我们需要和服务端进行通信,需要接受服务端返回的数据。所以单纯的startService这种方式是不行的。绑定Service,我们需要实现ServiceConnection。在ServiceConnection中我们需要实现两个方法,即连接成功,和断开连接。在连接成功这个方法中,我们就可以获取Bindr。进行通信了。下一篇,我将带大家一起编写一个小例子,加深对Aidl的使用过程。


0 0