Android系统中每一个进程都有自己的Dalvik VM实例,都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行着自己的操作,都在自己的那片狭小的空间里过完自己的一生。而AIDL就类似与两个进程之间的桥梁,使得两个进程之间可以进行数据的传输,跨进程通信有多种选择,比如 BroadcastReceiver , Messenger 等,但是 BroadcastReceiver 占用的系统资源比较多,如果是频繁的跨进程通信的话显然是不可取的;Messenger 进行跨进程通信时请求队列是同步进行的,无法并发执行。
AIDL(Android接口定义语言): AIDL是在Android中实现进程间通信的一种机制,其本质是一种语言,AIDL的优势在于速度快(系统底层直接是共享内存),性能稳,效率高,一般进程间通信就用它。
AIDL其实是对Binder机制的封装,通过Binder来实现进程间的通信。所以两个通信的进程中有一个是客户端(Client),一个是服务器端(Service)。
例子:使用AIDL实现在客户端调用服务端的getString()方法获取字符串
一:服务器端
1.在Android Studio中新建一个Service项目。
2.创建一个AIDL接口:
(1)在app\src\main目录下右击创建一个AIDL文件,取名为“MyAidlService”:
(2)创建完毕后Service项目中MyAidlService.aidl文件的文件路径默认为:com.example.service(下图红圈内),MyAidlService.aidl文件代码如下: