什么是 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 做为参数。