注意:本文不做任何理论性的解释说明,只有实际操作,至于Service的绑定过程,AIDL的实现过程之类的,一律不做深入讲解,具体的原理讲解,请跳转学习AIDL,这一篇文章就够了,这篇文章讲解的很详细,在此致敬
下面开始教程:
一、创建AIDL服务端
1、鼠标选中main文件夹,右键,new —— ADIL —— AIDL file,如图所示
2,输入aidl文件的名字,不要加后缀,如图所示,然后点击确定即可
3,生成后的目录结构如下所示
4,编写AIDL接口,如图所示
5,点击工具栏的build——make project,studio会帮我们把ADIL文件编译成二进制文件
6,创建AIDL的实现类,在java文件夹上右键,new Service , 输入文件名,系统会自动生成对应的文件,并且会自动在AndroidMainfest中帮我们配置好,生成的Service如图
7,实现前面定义的接口,具体编写方法看图
8,编辑,安装到手机上,这样,AIDL的Service端就完成了
二、编写AIDL的客户端
1、创建AIDL文件夹,main ——— new —— Folder —— AIDL Folder,
2,创建AIDL的存放文件夹,aidl ——new —— pacakge , 粘贴进我们前面生成的AIDL文件的包名,粘贴好之后,如图所示
3,把在Service端端生成的AIDL文件粘贴进我们创建好的文件夹里面,如图所示
4,点击工具栏的build——make project
5,把ADIL作为一个属性引入,同时把ServiceConnection也作为一个属性引入(可以在其它位置实现后再引入,我这里直接作为匿名内部类引入了)
6,在onServiceConnected里面实例化myAidlInterface,如图所示
7,在适当的时候绑定Service,(一定要在调用之前绑定),如图所示,实际使用中,最好做判空处理(示例代码中没写),注意在解绑,防止内存泄漏等问题
new ComponentName("cn.showmac.aidlservice", "cn.showmac.aidlservice.PlusService")
ComponentName的两个参数,第一个是AIDL文件的包名,第二个是要返回AIDL对象的Service
8,安装,执行