android使用aidl实现进程间通信
在 Android 中 , 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢 ? 显然 ,Java 中是不支持跨进程内存共享的。因此要传递对象 , 需要把对象解析成操作系统能够理解的数据格式 , 以达到跨界对象访问的目的。 在 JavaEE 中,采用 RMI 通过序列化传递对象。 在 Android 中 , 用 AIDL(Android Interface Definition Language :接口定义语言 ) 方式实现。 AIDL 是一种接口定义语言,用于约束两个进程间的通讯规则,供编译器生成代码,实现 Android 设备上的两个进程间通信 (IPC) 。 由于进程之间的通信信息需要双向转换,所以 android 采用代理类在背后实现了信息的双向转换 ,代理类由 android 编译器生成,对开发人员来说是透明的。 具体实现 假设 A 应用需要与 B 应用进行通信,调用 B 应用中的 download(String path) 方法, B 应用以 Service 方式向 A 应用提供服务。需要下面四个步骤 : 1 ) 在 B 应用中创建 *.aidl 文件 , aidl 文件的定义和接口的定义很相类,如:在 com.alex.aidl 包下创建 IDownloadService.aidl 文件,内容如下: package com.alex.aidl