记一次Android AIDL简单使用

提到IPC机制,想必大多数开发者都有听说过。AIDL作为Android 的一种实现进程通讯的语言,在开发中也是非常的重要,但是有时候限制于公司业务的需求,很少使用到aidl。今天就记一下自己写的一个aidl 的例子。

首先创建一个服务端module

创建一个Book实体,要实现Parcelable接口:


Book.class

接着以相同的包名创建aidl文件:


Book.aidl


BookManager.aidl

这里记得要在BookManager里面导入Book 的包名。

这个时候,build一下,在gen目录就会生成BookManager的接口文件:

BookManager

这里简单介绍一下,BookManager 接口中有一个Stub类,这个stub类就是个binder,其内部类Proxy是stub的代理类。我们创建aidl文件其实就是为了生成这个BookManager接口,这个接口直接由自己写也是可以的。

整个service的目录应该是这样的:

接下来我们创建service和BookManager.Stub的实现类:


BookService

不要忘了在MF文件中注册和设置action:


service注册
BookManagerImp

整个服务端目录结构应该是这样的:


目录结构

接下来是客户端的代码:

我们需要把服务端的Book类和aidl文件原封不动的复制过来,记得Book类的包名要和服务端的一样:

目录结构大概是这样的:


客户端目录结构

接下来我们在客户端的MainActivity中写一些交互的代码:


客户端MainActivity代码

这里只是简单的进行了测试,并没有进行异常,断开连接的处理。


测试

我们可以看到,进程间的通讯已经成功了。

不过值得注意的是,在写这个小demo的时候,也遇到了很多小小的坑需要大家亲自写一遍去体验,毕竟光看代码还是不行的,还是要自己亲自去操作才能有深刻的体会,印象也会更深刻。

你可能感兴趣的:(记一次Android AIDL简单使用)