AIDL——Android 接口描述语言

#移动开发 #Android

1. 要解决什么问题
它可以让后续的开发者无需了解内部,只根据接口实现相关的操作用,常用于在不同的 Activity 中对 Service 进行控制。

2. 什么是 AIDL
AIDL (Android Interface Definition

Language):Android 接口描述语言,编译器可以通过 aidl 文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的.

如果需要在一个 Activity 中, 访问另一个 Service 中的某个对象, 需要先将对象转化成 AIDL 可识别的参数 (可能是多个参数),

然后使用 AIDL 来传递这些参数, 在消息的接收端, 使用这些参数组装成自己需要的对象。

3. 如何对 aidl 进行操作
启动 service 有两种方式,一种通过 bindService 来启动,调用退出时,服务也将停止,或者用 unbind 来停止;另一种通过 startService 来启动,调用退出时,服务还在运行,只能通过 stop 来停止。 使用 aidl 时,先引入 aidl 的相关类,然后使用 bind <-> unbind,start <-> stop,或者 start&bind <->

unbind&stop,不同调用方式的生命周期不同,详见参考网页。

4. 参数规则
必须导入 (import) 所有非内置类型,哪怕是这些类型是在与接口相同的包中。AIDL 能支持的数据类型有:Java 编程语言的主要类型 (int,

boolean 等)—不需要 import 语句; 类 String, List,Map, CharSequence 不需要 import 语句,但需要 Parcelable 封装,否则会报错。

5. 参考
[http://blog.csdn.net/lganggang131/article/details/6553468

](http://blog.csdn.net/lganggang131/article/details/6553468)
[http://www.oschina.net/question/195301_32171

](http://www.oschina.net/question/195301_32171)