在前面几篇文章中,我们详细介绍了 Android 系统进程间通信机制 Binder 的原理,并且深入分析了系统提供的 Binder 运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析的 Binder 接口都是基于 C/C++语言来实现的,但是我们在编写应用程序都是基于 Java 语言的,那么,我们如何使用 Java 语言来使用系统的 Binder 机制来进行进程间通信呢?这就是本文要介绍的 Android 系统应用程序框架层的用 Java 语言来实现的 Binder 接口了。 熟悉 Android 系统的读者,应该能想到应用程序框架中的基于 Java 语言的Binder 接口是通过 JNI 来调用基于 C/C++语言的 Binder 运行库来为 Java 应用程序提供进程间通信服务的了。JNI 在 Android 系统中用得相当普遍,SDK 中的 Java接口 API 很多只是简单地通过 JNI 来调用底层的 C/C++运行库从而为应用程序服务的。 这里,我们仍然是通过具体的例子来说明 Binder 机制在应用程序框架层中的Java 接口,主要就是 Service Manager、Server 和 Client 这三个角色的实现了。通常,在应用程序中,我们都是把 Server 实现为 Service 的形式,并且通过IServiceManager.addService 接口来把这个 Service 添加到 Service Manager,Client 也是通过 IServiceManager.getService 接口来获得 Service 接口,接着就可以使用这个 Service 提供的功能了,这个与运行时库的 Binder 接口是一致的。 前面我们学习 Android 硬件抽象层时,曾经在应用程序框架层中提供了一个硬件访问服务 HelloService,这个 Service 运行在一个独立的进程中充当 Server 的角色,使用这个 Service 的 Client 运行在另一个进程中,它们之间就是通过 Binder 机制来通信的了。这里,我们就使用 HelloService 这个例子来分析 Android 系统进程间通信 Binder 机制在应用程序框架层的 Java 接口源代码。所以希望读者在阅读下面的内容之前,先了解一下前面在 Ubuntu 上为 Android 系统的 Application Frameworks 层增加硬件访问服务这篇文章。 这篇文章通过五个情景来学习 Android 系统进程间通信 Binder 机制在应用程序框架层的 Java 接口:1. 获取 Service Manager 的 Java 远程接口的过程;2. HelloService 接口的定义;3. HelloService 的启动过程;4. Client 获取HelloService 的 Java 远程接口的过程;5. Client 通过...