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

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

 

imageimageimageimage

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

image

 

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

image

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

image

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

image然后这个文件就不报错了image

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

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

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

image

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

image这段代码发生错误image

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

image

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

image

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

image

11.编辑MainAtivity.java文件

imageimage  

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

imageimage

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

image

image

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

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

image

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

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

imageimage

这是运行时打印的日志

image

转载于:https://my.oschina.net/xiaolei123/blog/393509

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值