AIDL

AIDL是Android接口定义语言,用于实现跨进程通信。通过在src目录下放置AIDL文件,gen目录会生成对应的接口类。在bindService时,我们可以获取到AIDL接口的IBinder对象,它作为进程间通信的代理。AIDL支持的基本数据类型、String、CharSequence,以及List、Map和Parcelable。它的工作原理是通过编译器生成代码,实现进程间的对象访问。
摘要由CSDN通过智能技术生成

什么是 AIDL 以及如何使用

1、AIDL是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言。
2、使用 AIDL可以帮助我们发布以及调用远程服务,实现跨进程通信。
3、将服务的 AIDL放到对应的 src 目录,工程的 gen 目录会生成相应的接口类我们通过 bindService(Intent,ServiceConnect,int)方法绑定远程服务,在 bindService中 有 一 个 ServiceConnec 接 口 , 我 们 需 要 覆 写 该 类 的onServiceConnected(ComponentName,IBinder)方法,这个方法的第二个参数 IBinder 对象其实就是已经在 AIDL中定义的接口,因此我们可以将 IBinder 对象强制转换为 aidl 中的接口类。我们通过 IBinder 获取到的对象(也就是 AIDL文件生成的接口)其实是系统产生的代理对象,该代理对象既可以跟我们的进程通信, 又可以跟远程进程通信, 作为一个中间的角色实现了进程间通信。

AIDL的创建方法

AIDL语法很简单,可以用来声明一个带一个或多个方法的接口,也可以传递参数和返回值。 由于远程调用的需要, 这些参数和返回值并不是任何类型.下面是些AIDL支持的数据类型:
1. 不需要import声明的简单Java编程语言类型(int,boolean等)
2. String, CharSequence不需要特殊声明
3. List, Map和Parcelables类型, 这些类型内所包含的数据成员也只能是简单数据类型, String等其他比支持的类型.

AIDL 的全称是什么?如何工作?能处理哪些类型的数据?

AIDL 全称 Android Interface Definition Language(AndRoid 接口描述语言) 是一种接口描述语言; 编译器可以通过 AIDL文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程跨界对象访问的目的。
需要完成两件事情:
1. 引入 AIDL 的相关类.;
2. 调用 AIDL产生的 class.理论上, 参数可以传递基本数据类型和 String, 还有就是 Bundle 的派生类, 不过在 Eclipse 中,目前的 ADT 不支持 Bundle 做为参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值