在前面几篇文章中,我们详细介绍了 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,这个 S