Android Studio中使用aidl实现进程中通讯

2017-07-03  本文已影响0人  linda_zhou

前言:纸上得来终觉浅,凡知此事要躬行!平时不忙的时候习惯看书,看博客来提升自己,但是一段时间过后就会忘,所以总结还是非常有必要的,既加深自己的印象,也与人方便。


--------------------------------------------------->对应的demo地址,点击下载<----------------------------------------------------

既然要演示进程间通讯,那就至少要有两个不同的进程。方便起见,这里就在一个项目增加一个进程

1.创建一个SubjectService作为服务端,并在AndroidManifest中注册,如何让SubjectService在一个新的进程中呢,很简单,只需增加一个属性"process",如图:

AndroidManifest.xml中的service

2.创建一个aidl文件类型的接口ISubjectManager.aidl,在其中定义暴露给客户端的抽象方法,我们可以借助AndroidStudio的功能来实现这一步。如图:

新建aidl文件

新建ISubjectManager.aidl文件后,左侧目录中会自动多了一个与java同级的aidl文件夹,如图:

新建aidl文件后的目录结构

在接口声明抽象方法,如图:

接口文件

注意:即使Subject 和ISubjectManager在同一文件下,仍然要手动导入Subject。另外因为binder不能直接传递对象,所以我们要对Subject实现Parcelable,并且创建一个名为Subject的aidl文件。如图:

完整的目录结构

Subject.aidl中只需写如下内容即可,如图:

Subject.aidl

3.编译项目,就会生成一个java类型的ISubjectManger文件,如图:

生成ISubjectManager.java

4.接下来我们就可以利用ISubjectManager.java 来进行进程间通讯了。

服务端代码如图:

服务端代码

客户端代码如图:

客户端代码

注意客户端销毁的时候,及得解绑服务

解绑服务

打印结果日志:

运行结果

好啦!到此一个基本的aidl使用流程就说完了,以上内容主要参考了《开发艺术与探索》,另外因本人水平有限,表述难免有不足之处,欢迎指正!

--------------------------------------------------->对应的demo地址,点击下载<----------------------------------------------------

上一篇 下一篇

猜你喜欢

热点阅读