14. Android接口描述语言
优质
小牛编辑
138浏览
2023-12-01
14.Android接口描述语言
Android中的每个应用程序都运行于独立的进程中。出于安全考虑,程序不可以直接访问另一个程序中的内容。但不同程序之间交换数据是允许的,为此Android提供了一系列的通信机制。其中之一是前面我们提到的Intent,它是一种异步的机制,在发送时不必等待对方响应。
不过有时我们需要更直接一些,同步地访问其它进程中的数据。这类通信机制就叫做进程间通信(Interprocess Communication),简称IPC。
为实现进程间通信,Android设计了自己的IPC协议。由于许多细节需要考虑,因此IPC机制在设计上总是趋于复杂,其中的难点就在于数据的传递。比如在远程方法调用的参数传递,需要将内存中的数据转化成易于传递的格式,这被称作序列化(Marshaling),反过来,接收参数的一方也需要将这种格式转换回内存中的数据,这被称作反序列化(Unmarshaling)。
为了简化开发者的工作,Android提供了Android接口描述语言(Android Interface Definition Language),简称AIDL。这是一个轻量的IPC接口,使用Java开发者熟悉的语法形式,自动生成进程间通信中间繁复的代码。
作为展示AIDL实现进程间通信的例子,我们将新建两个应用程序:一个是LogService,作为服务端;一个是LogClient,作为客户端与远程的LogService绑定。