1. 引言:
(1)AIDL的作用
在Android平台,每个应用程序都是一个单独的JVM,都运行在自己的进程空间里, 通常,一个进程不允许访问另一个进程的内存空间(一个应用不能访问另一个应用)。当用户(程序开发人员)想在一个App中访问另一个App的进程空间的时候,就需要进程间通信。在Android中,远程服务为我们提供了实现进程间通信的方式,其中,AIDL是应用程序开发人员常的一种方式。
AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参 数。换句比较浅显的话来说,就是我这个App应用的activity,需要调用其他App应用的Service.当然同一App应用的activity
与service也可以在不同进程间,这可以设置Service配置中,android:process=":remote"。
可以看出,aidl的适用场景为: 只有你允许客户端从不同的应用程序为了进程间的通信而去访问你的service时,你可以使用AIDl来实现。例如,百度地图给我们提供了下面的service:com.baidu.location.f,我们只要在我们的应用程序的manifest.xml文件中声明这个service,就能用它提供的服务了。:
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
2. 本篇主要实例:
应用服务之远程(remote)服务的开启和运用,也就是AIDL的创建和使用过程:
例子说明:
(1). 功能: 创建remote service,在service中计算出指定路径下有多少个文件,并在UI显示。
(2). 您将学到: a. remote service的定义和使用;
b. Aidl文件的定义和使用。
创建过程:
(1)在工程的src下,新建立一个文本文件,将要实现的函数放在这个文件中,后缀为.aidl。
(2)刷新工程后,就会发现在gen包下,有一个同名的java文件,这是aidl工具自动生成的,里面,就有我们要实现的函数。
(3)Ai