意义:
由于每个应用进程都有自己的独立进程空间,在android平台上,一个进程通常不能访问另一个进程的内存空间,而我们经常需要夸进程传递对象,就需要把对象分解成操作对象可以理解的基本单元,并且有序的通过进程边界。
定义:
AIDL(Android Interface Definition Language)是一种IDL语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。
说明以及实现流程:
AIDL接口和普通的java接口没有什么区别,只是扩展名为.aidl,保存在src目录下,如果其他应用程序需要IPC,则也需要在src目录下创建同样的AIDL文件,创建完毕之后,通过ADT工具,会在工程的gen目录下生成相对应的.java文件。
一般实现两个进程之间的通信需要实现下面几个步骤
(1)在Eclipse的android工程目录下面创建一个.aidl扩展名的文件,语法和java定义接口的语法差不多,不过需要自己手动import对应的包名。(比如需要用到list集合,则需要import java.util.List;)
(2)如果aidl文件符合规范,ADT工具会帮助编译器在gen目录下生成相对应的.java文件。
(3)需要继承实现一个服务类,跨进程调用的基础。
(4)在service端实现AIDL接口,如果有回调则在client端实现callback的AIDL接口。
(5)在AndroidManifest.xml注册service。
注意:
实现AIDL,我们需要注意以下五点
(1)AIDL只支持接口方法,不能公开static变量。
(2)AIDL接口方法如果有参数,则需要注意in、out、inout的使用规则,对于基本数据类型,默认是in类型,可以不需要添加声明,非基本可变对象需要在变量名之前添加方法类型
in表示输入参数,调用者把值传递给使用者使用。










