Aidl跨进程通信机制-android学习之旅(87)

原创 2015年11月20日 09:09:41

Aidl简介

AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信的代码。
如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。

下面介绍使用方法

下面介绍使用方法

1.服务端需要创建一个包,在包里面新建一个后缀名为. aidl的文件。假设包命名为com.android.hellosumaidl。在aidl文件中写入如下代码

而参数区分输入和
输出,输入用in来表示,输出用out。
这里写图片描述

  1. 文件被保存之后,Android的AIDL工具会在gen/com/android/hellosumaidl这个文件夹里自动生成对应的 IAdditionService.java这个文件。、这个文件里就包含了Stub,该类声明了所有.aidl中描述的方法,Stub还定义了少量的辅助方法,尤其是asInterface(),通过它或以获得IBinder。 binder在用户调用绑定服务时会返回这个类型的变量,并且返回一个接口实例。

3.实现服务:在包中新建一个服务类,该类继承自stub类,并且实现相关的方法。

4.发布服务:方法就是继承Service类,然后实现Service.onBind(Intent)函数,返回一个已经实现好的接口对象。此时,服务接口已经暴露给客户端。

其次是客户端。

1.为了演示方便客户端首先做的是要将服务端工程中定义好的com.ryg.sayhi.aidl包拷贝到工程目录下,也就是在客户端内部声明.aidl文件中所定义的接口。

2.实现ServiceConnection。在这个函数中 ,我们通过服务端的成员函数onBind来获取服务接口的实例。通过stub类的成员函数asInterface将返回的值转化为一个服务接口的实例。
这里写图片描述

3.调用接口中提供的方法,调用结束后断开连接即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

告别单身+成就霸业,男人们必知的人生定律

1、蓝斯登原则:在你往上爬的时候,一定要保持梯子的整洁,否则你下来时可能会滑倒。 提出者:美国管理学家蓝斯登。 点评:进退有度,才不至进退维谷;宠辱皆忘,方可以宠辱不惊。 2、卢维斯定理:...

Android App之间通过Intent交互

Android 最重要的功能之一是应用能够基于它要执行的“操作”向另一个应用发送用户。 例如,如果您的应用有您要在地图上显示的公司地址,您无需在显示地图的应用中构建 Activity。 而是可以创建使...

Android IPC机制(三)——利用AIDL实现跨进程通信

**写作原因:跨进程通信的实现和理解是Android进阶中重要的一环。下面博主分享IPC一些相关知识、操作及自己在学习IPC过程中的一些理解。这一章是对AIDL的基本使用的介绍,由于博主也是AIDL初...

Android 中的Binder跨进程通信机制与AIDL

如果对进程、线程概念还很懵懂的同学可以看一下之前发表的一篇博客,里面是基础概念: IPC进程间通信/跨进程通信 http://blog.csdn.net/github_33304260/artic...

Android跨进程通信之AIDL机制和广播机制的异同

在写这篇博客之前要声明的是本人是一个初学者,只是在学习之处有这么些困惑,然后查阅了一些相关资料,来了解Android跨进程通信机制,然而我个人理解除了AIDL实现跨进程之外好像用广播也可以达到跨进程效...

Android aidl跨进程通信

  • 2017年06月08日 14:14
  • 14MB
  • 下载

Android使用AIDL实现跨进程通信

  • 2015年12月31日 10:10
  • 4.62MB
  • 下载

Android学习之跨进程通信安卓接口定义语言AIDL(一)

今天来写下安卓接口定义语言,也就是大家听了都头疼的AIDL,今天有幸看到慕课网的AIDL视频学习了一下,在此感谢慕课网,是个很不错的网站。 进入正题,Android中跨进程是如何传递数据的?如果是Se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Aidl跨进程通信机制-android学习之旅(87)
举报原因:
原因补充:

(最多只允许输入30个字)