第1页共37页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共37页在前面几篇文章中,我们详细介绍了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接口,主要就是ServiceManager、Server和Client这三个角色的实现了
通常,在应用程序中,我们都是把Server实现为Service的形式,并且通过IServiceManager
addService接口来把这个Service添加到ServiceManager,Client也是通过IServiceManager
getService接口来获得Service接口,接着就可以使用这个Service提供的功能了,这个与运行时库的Binder接口是一致的
前面我们学习Android硬件抽象层时,曾经在应用程序框架层中提供了一个硬件访问服务HelloService,这个Service运行在一个独立的进程中充当Server的角色,