AIDL 服务
一、什么是 AIDL 服务............................................................................................................................................................................1
二、AIDL 基本语法................................................................................................................................................................................1
三、远程服务端的创建过程...................................................................................................................................................................1
3.1、简要步骤..................................................................................................................................................................................1
3.2、具体操作..................................................................................................................................................................................2
3.2.1、创建文件 IMyService.aidl:........................................................................................................................................2
3.2.2、创建服务类及实现内部类..........................................................................................................................................2
3.2.3、在 AndroidManifest.xml 文件中配置 MyService 类...................................................................................................2
四、本地客户端的使用方法...................................................................................................................................................................3
4.1、新建一个 Eclipse Android 工程,并将刚才远程服务端自动生成的 gen 目录下面的 IMyService.java 文件连同包目
录一起复制到客户端工程的 src 目录中。....................................................................................................................................3
4.2、调用 AIDL 服务首先要绑定服务,然后才能获得服务对象。..........................................................................................3
五、用法小结...........................................................................................................................................................................................3
六、深入分析...........................................................................................................................................................................................4
一、什么是 AIDL 服务
一般创建的服务并不能被其他的应用程序访问。为了使其他的应用程序也可以访问本应用程序提供的服务, Android
系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于 RPC 的解决方案一样,Android
使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。因此,可以将这种可以跨进程访问的服
务称为 AIDL(Android Interface Definition Language)服务。
二、AIDL 基本语法
AIDL 使用简单的语法来声明接口,描述其方法以及方法的参数和返回值。这些参数和返回值可以是任何类型,甚至
是其他 AIDL 生成的接口。
其中对于 Java 编程语言的基本数据类型 (int, long, char, boolean,String,CharSequence)集合接口类型 List 和 Map,不
需要 import 语句。
而如果需要在 AIDL 中使用其他 AIDL 接口类型,需要 import,即使是在相同包结构下。 AIDL 允许传递实现
Parcelable 接口的类,需要 import
需要特别注意的是,对于非基本数据类型,也不是 String 和 CharSequence 类型的,需要有方向指示,包括 in、out 和
inout,in 表示由客户端设置,out 表示由服务端设置,inout 是两者均可设置。
AIDL 只支持接口方法,不能公开 static 变量。
三、远程服务端的创建过程
3.1、简要步骤
1、在 Eclipse Android 工程的 Java 包目录中建立一个扩展名为 A.aidl 的文件,并写下需要的接口。如果 aidl 文件的内
容是正确的,ADT 会在 gen 目录下自动生成一个 A.Java 接口文件。
2、建立一个服务类(Service 的子类)。并在创建的服务类中创建一个内部类,实现由 aidl 文件生成的 Java 接口。
3、在服务类的 onBind 方法返回时,将实现 aidl 接口的内部类对象返回出去。