AIDL(Android接口描述语言)是一个IDL(Interactive Data Language/交互式数据语言)语言,它可以生成一段代码,可以是一个在Android设备上运行的两个进程使用内部通信进程进行交互。
如果你想在一个安卓程序/进程中(例如在一个Activity)访问另一个安卓程序/进程中(例如在一个service)某个对象的方法,你就可以使用AIDL来生成这样的代码来传递各种参数。
名称解释
IPC(Inter-Process Communication):一种概念,即进程间通信。
匿名共享内存(Anonymous Shared Memory):其作用之一即通过Binder进程间通信机制来实现进程间的内存共享。
Binder:Binder是对IPC的具体实行,是IPC的一种具体实现.其本质也是调用系统底层的共享内存实现。
AIDL:Android Interface Definition Language的缩写,即Android接口定义语言。它是Android的进程间通信比较常用的一种方式进程间的通信,速度快(系统底层直接是共享内存),性能稳,效率高,一般进程间通信就用它,AIDL是Binder机制向外提供的接口,目的就是为了方便对Binder的使用。
消息(Messager):Messenger本质也是AIDL,只是进行了封装,开发的时候不用再写.aidl文件,效率应该是和Aidl是一样的,与Aidl的区别在于Messager是线程安全的,而Aidl是非线程安全的,所以Aidl在使用的时候应该注意这个问题。
广播(BroadcastReceiver):只要注册了广播,都能收到,有点范围广,缺点速度慢必须在一定时间完成处理操作,同其他Android四大组件一样,都不能执行耗时操作。
ContentProvider:暴露app的数据访问接口,让其他应该访问app数据.同时也能通过ContentProvider来访问第三方的一些app数据(如通讯录,日历等暴露接口的应用)。
Intent:Intent是最高层级的封装,实质是封装了对Binder的使用,当然Intent也常常在同一进程中调用,只是把两种方式封装在一起了。