[深入理解Android卷一全文-第六章]深入理解Binder
由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容。
第6章 深入理解Binder
本章主要内容
· 以MediaServer为切入点,对Binder的工作机制进行分析。
· 剖析ServiceManager的原理。
· 以MediaPlayerService为切入点对Client和Service的交互进行分析。
· 学以致用,探讨如何写自己的Service。
本章涉及的源代码文件名及位置
下面是我们本章分析的源码文件名及其位置。
· Main_mediaserver.cpp
framework/base/Media/MediaServer/Main_mediaserver.cpp
· Static.cpp
framework/base/libs/binder/Static.cpp
· ProcessState.cpp
framework/base/libs/binder/ProcessState.cpp
· IServiceManager.cpp
framework/base/libs/binder/IServiceManager.cpp
· BpBinder.cpp
framework/base/libs/binder/BpBinder.cpp
· IInterface.h
framework/base/include/binder/IInterface.h
· IServiceManager.h
framework/base/include/binder/IServiceManager.h
· IServiceManager.cpp
framework/base/libs/binder/IServiceManager.cpp
· binder.cpp
framework/base/libs/binder/binder.cpp
· MediaPlayerService.cpp
framework/base/media/libmediaplayerservice/MediaPlayerService.cpp
· IPCThreadState.cpp
framework/base/libs/binder/ IPCThreadState.cpp
· binder_module.h
framework/base/include/private/binder.h
· Service_manager.c
framework/base/cmds/ServiceManager/Service_manager.c
· Binder.c
framework/base/cmds/ServiceManager/Binder.c
· IMediaDeathNotifier
framework/base/media/libmedia/ IMediaDeathNotifier.cpp
· MediaMetadataRetriever
framework/base/media/libmedia/ MediaMetadataRetriever.cpp
6.1 概述
Binder是Android系统提供的一种IPC(进程间通信)机制。由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等。Binder相对于其他IPC机制来说,就更加灵活和方便了。对于初学Android的朋友而言,最难却又最想掌握的恐怕就是Binder机制了,因为Android系统基本上可以看作是一个基于Binder通信的C/S架构。Binder就像网络一样,把系统各个部分连接在了一起,因此它是非常重要的。
在基于Binder通信的C/S架构体系中,除了C/S架构所包括的Client端和Server端外,Android还有一个全局的ServiceManager端,它的作用是管理系统中的各种服务(Service)。Client、Server和ServiceManager这三者之间的交互关系,如图6-1所示 :
图6-1Client、Server和ServiceManager三者之间的交互关系
注意:一个Server进程可以注册多个Service,就像即将讲解的MediaServer一样。
更多相关文章
- Android Handler处理机制 ( 一 )(图+源码分析)——Handler,Message
- Java对象引用处理机制
- Android--推送机制实现原理(二)-自己实现推送功能
- spring cloud微服务分布式云架构-Spring Cloud Netflix
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- WebService之基于REST机制的实现实例(Java版)
- 为何使用java反射机制
- 《Java 应用架构设计 模块化与OSGI》 读书笔记一
- Java异常处理机制 —— 深入理解与开发应用