安卓使用aidl绑定远程Service并调用其方法

1.首先建立代表远程服务的service项目

 

安卓使用aidl绑定远程Service并调用其方法_第1张图片安卓使用aidl绑定远程Service并调用其方法_第2张图片安卓使用aidl绑定远程Service并调用其方法_第3张图片安卓使用aidl绑定远程Service并调用其方法_第4张图片

2.再在manifest.xml中配置service 这里必须配置一个过滤器 然后配置一个action

image

 

3.进入项目目录文件夹 把 IService.java 改成IService.aidl

安卓使用aidl绑定远程Service并调用其方法_第5张图片

4.在Eclipse中 右键项目 刷新项目 这时候项目肯定会报错,

安卓使用aidl绑定远程Service并调用其方法_第6张图片

5.打开IService.aidl,把里面所有的public修饰符删除掉

安卓使用aidl绑定远程Service并调用其方法_第7张图片然后这个文件就不报错了安卓使用aidl绑定远程Service并调用其方法_第8张图片

6.你会发现在你的gen目录下自动生成了一个IService.java文件

安卓使用aidl绑定远程Service并调用其方法_第9张图片没错 这个自动生成的文件才是真正需要使用的

7.打开这个文件  我们发现 这个文件里面有一个IService的接口,里面有一个内部类 Stub已经继承了Binder然后实现了IService的方法

安卓使用aidl绑定远程Service并调用其方法_第10张图片

8.到这一步 我们发现还有一个文件时报错的。就是这个最关键的Service服务类

安卓使用aidl绑定远程Service并调用其方法_第11张图片这段代码发生错误安卓使用aidl绑定远程Service并调用其方法_第12张图片

9.只需要把这个类修改成继承IService.Stub这个内部类就可以

安卓使用aidl绑定远程Service并调用其方法_第13张图片

这时候整个项目不报错了 项目的结构大概是这样子的

安卓使用aidl绑定远程Service并调用其方法_第14张图片

10.现在我们新建一个项目用来调用刚才新建的远程服务service,在主界面中放入两个按钮,分别是绑定远程服务 调用远程服务的方法

安卓使用aidl绑定远程Service并调用其方法_第15张图片

11.编辑MainAtivity.java文件

安卓使用aidl绑定远程Service并调用其方法_第16张图片安卓使用aidl绑定远程Service并调用其方法_第17张图片  

12.我们知道如果需要调用远程服务的方法  必须得到他的接口,这时候我们必须在这个项目新建一个包 包名与远程服务里的gen里面的包名一样 然后把IService.aidl文件拷贝到包下

安卓使用aidl绑定远程Service并调用其方法_第18张图片安卓使用aidl绑定远程Service并调用其方法_第19张图片

我们会发现 在这个项目下的gen目录下也生成了IService.java这个文件,这时候就可以使用这个类来调用远程方法了

image

安卓使用aidl绑定远程Service并调用其方法_第20张图片

这个类型转换需要注意,不能使用传统的强制转换。

13.然后我们就可以调用远程service里的方法了

安卓使用aidl绑定远程Service并调用其方法_第21张图片

调用这个方法会爆出异常,把它捕获就行了。

14.到这里 也是弄好了。把这两个项目部署一下就好了。

安卓使用aidl绑定远程Service并调用其方法_第22张图片安卓使用aidl绑定远程Service并调用其方法_第23张图片

这是运行时打印的日志

image

你可能感兴趣的:(安卓使用aidl绑定远程Service并调用其方法)