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

 

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

 

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

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

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

然后这个文件就不报错了

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

没错 这个自动生成的文件才是真正需要使用的

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

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

hive远程远程访问速度满 aidl完成远程service方法调用_java

这段代码发生错误

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

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

hive远程远程访问速度满 aidl完成远程service方法调用_hive远程远程访问速度满_02

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

11.编辑MainAtivity.java文件

 

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

hive远程远程访问速度满 aidl完成远程service方法调用_python_03

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

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

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

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

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

hive远程远程访问速度满 aidl完成远程service方法调用_远程服务_04

这是运行时打印的日志