首先,AIDL作为android接口描述语言,全拼为:Android Interface Definition Language,
乍一看很复杂的样子,其实作为跨进程调用方法,理解起来也不是那么难。我们都知道,四大组件中的
其他三个,Activity,Broadcast和Content Provider都可以进行跨进程访问,Service使用了aidl同样
可以实现这种访问。
AIDL是一种接口定义语言,用于约束两个进程间的通讯规则,供编译器生成代码,实现Android设备
上的两个进程间通信(IPC)。AIDL的IPC 机制和EJB所采用的CORBA很类似,进程之间的通信信息,首先
会被转换成AIDL协议消息,然后发送给对方,对方收到AIDL协议消息后再转换成相应 的对象。由于进程
之间的通信信息需要双向转换,所以android采用代理类在背后实现了信息的双向转换,代理类由android
编译器生成,对开发人员来说是透明的。
在哪些场合需要用到两个需要用到aidl呢,一个典型的例子就是android 的音乐播放器,但是android
的音乐播放器的程序并没有把两个应用之 间的通信体现的很明显,假设我们需要在其他的应用中操作正在
播放的音乐,虽然我们可以用SERVICECMD来给音乐播放器发送广播,但是这些命令和音乐 播放器互动的
程度有限,只能播放,停止,上下一曲等,假设我需要在第二个应用中获取当前的播放进度,歌曲名字等,
该怎么办呢,这个时候aidl就派上用场 了,下边通过一个简单的例子来说明两个应用之间怎么使用aidl来
通信。
对于AIDL的简单使用很多博客都有介绍,后期我会添加一个大型项目的aidl服务操作。
以下是简单例子的友情链接:
有图片的例子:
http://blog.csdn.net/Android_Tutor/article/details/6427680
有代码的例子:
http://blog.csdn.net/stonecao/article/details/6425019