android之AIDL实现IPC(间通信)

目录

什么是AIDL,AIDL的作用
AIDL适用场景
AIDL开发步骤

什么是AIDL,AIDL的作用

AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(inter-process communication, IPC)的代码。

由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象。
在Android平台,一个进程通常不能访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。

  通过代码来实现这个数据传输过程是冗长乏味的,Android提供了AIDL工具来处理这项工作。

AIDL适用场景

官方文档特别提醒我们何时使用AIDL是必要的:只有你允许客户端从不同的应用程序为了进程间的通信而去访问你的service,以及想在你的service处理多线程。具体的不同场景下的AIDL设计规则如下:
如果不需要进行不同应用程序间的并发通信(IPC),通过实现一个Binder对象来创建接口;或者你想进行IPC,但不需要处理多线程的,则使用Messenger对象来创建接口。无论如何,在使用AIDL前,必须要理解如何绑定service——bindService。

AIDL开发步骤

AIDL接口文件,和普通的接口内容没有什么特别,只是它的扩展名为.aidl,保存在src目录下。如果其他应用程序需要IPC,则那些应用程序的src也要带有这个文件。Android SDK tools就会在gen目录自动生成一个IBinder接口文件。service必须适当地实现这个IBinder接口。那么客户端程序就能绑定这个service并在IPC时从IBinder调用方法。每个aidl文件只能定义一个接口,而且只能是接口的声明和方法的声明。

参考文章

http://blog.csdn.net/wxyyxc1992/article/details/17303953