首页 > 移动平台 > 详细

android进程间的通信

时间:2016-01-14 18:48:33      阅读:212      评论:0      收藏:0      [点我收藏+]

我们知道,进程间是不允许直接通信的,不能直接拿另外一个进程的数据。但是现在有这么一个需求,我就想让别人使用我的数据。所以这里引出了要说的进程间通信(IPC)。

android给我们提供了一套规则,就可以实现跨进程间的通信,这套规则就是AIDL(android interface definition lanuage)安卓接口定义语言。

使用步骤:

1、要访问的远程文件IService,它是一个接口,后缀名修改为aidl

技术分享技术分享

 

2、在工程中找到目标工程,进行刷新

技术分享

 

 

3、找到目标文件,此时已经是aidl后缀了,文件会报错,把文件里面的public去掉就行

 技术分享

 

4、同时gen目录下,有自动生成一个IService文件,打开文件文件内容如下,关注我标识的部分,Stub继承了Binder类实现了IService类

技术分享

 

5、而我的服务类ServiceDemo中继承实现关系如下

技术分享

 

6、也就是说我的ServiceDemo做的事情,Stub已经帮我做了,所以我把继承、实现关系修改为,继承IService的Stub类

技术分享

 

7、要访问的远程服务已经修改完毕。现在在我的另外一个工程中要使用这个远程服务。

 

8、把远程服务aidl文件拷贝到我的工程中,注意这里需要创建一个包,包名和远程aidl文件所在的包名一致,aidl文件放在这个包下。

9、拷贝过来后,此时我的工程gen目录下也会生成相应IService文件,打开文件,关注内容如下,意思就是说把一个IBinder对象传给它,它就可以把那个对象转成IService的接口

技术分享

 

10、然后在自己的工程文件下使用如下代码,拿到远程服务的对象binder,就可以调用远程服务的方法、数据了。

技术分享

 

android进程间的通信

原文:http://www.cnblogs.com/MarsDabiaoge/p/5130948.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!