AIDL使用Demo

来源:互联网 发布:吉林市知鼎人才网 编辑:程序博客网 时间:2024/06/07 01:48

自从开始学Android的时候,就接触过AIDL,但是那时也是一知半解的,再加上最近做的项目也很少用到它,有时突然想不起来怎么使用了。
今天看到了一篇关于它的文章,所以决定重新把它回顾一下,至少知道如何使用。
该Demo包括两部分,一个是AIDLServer,一个是AIDLClient。
首先创建server部分:
先创建一个Android工程,默认自带一个Activity,然后在src目录下创建一个aidl文件:

这就是创建的aidl文件
这就是创建的aidl文件,里面默认有个basicTypes方法,也可以不用它,我这里就注掉了,自己新增了一个getValue()的方法。燃油build一下。
接下来创建service,如下:
这里写图片描述
注意,这里别忘了注册manifest文件,action已经要添加,不然其他进程没法调用到:
这里写图片描述
到这里,server就编写完成了,然后可以先把它run起来。
接着编写Client端,同样,新建一个Android project,然后把server中的src目录下的aidl整个文件夹拷贝过来,注意,这里aidl文件的包名要与server端的一致,如图:
这里写图片描述
接下来编写绑定service的代码:
这里写图片描述
绑定service的时候,切记,如果手机系统>=5.0,一定要加上
intent.setPackage(“server包名”);不然会报.IllegalArgumentException: Service Intent must be explicit: Intent。。。这样的错误。
到这里客户端编写完成,然后run看下结果:
这里写图片描述
ok,能读取到server里service里的getValue()返回的值。
demo源码:
AIDLClientGitHub
AIDLServerGitHub