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

标签: aidl跨进程android安卓跨进程通信
567人阅读 评论(0) 收藏 举报
分类:

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.调用接口中提供的方法,调用结束后断开连接即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:851643次
    • 积分:14181
    • 等级:
    • 排名:第855名
    • 原创:554篇
    • 转载:3篇
    • 译文:2篇
    • 评论:448条
    欢迎交流讨论
      个人微信号
      微信公众号:IT面试题汇总
    博客专栏
    文章分类