由于《深入理解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一样。

更多相关文章

  1. Android Handler处理机制 ( 一 )(图+源码分析)——Handler,Message
  2. Java对象引用处理机制
  3. Android--推送机制实现原理(二)-自己实现推送功能
  4. spring cloud微服务分布式云架构-Spring Cloud Netflix
  5. Java记录 -88- 利用反射机制调用对象的私有方法和属性
  6. WebService之基于REST机制的实现实例(Java版)
  7. 为何使用java反射机制
  8. 《Java 应用架构设计 模块化与OSGI》 读书笔记一
  9. Java异常处理机制 —— 深入理解与开发应用

随机推荐

  1. 高效的10个Pandas函数,你都用过吗?
  2. 利用query()与eval()优化pandas代码
  3. pandas参数设置小技巧
  4. 原来Python自带了数据库,用起来真方便!
  5. QGIS+Conda+jupyter玩转Python GIS
  6. jieba分词-Python中文分词领域的佼佼者
  7. 详解seaborn可视化中的kdeplot、rugplot
  8. JavaScript 风格指南 [每日前端夜话(0x1C
  9. 在模仿中精进数据可视化01:国内38城居住自
  10. 多快好省地使用pandas分析大型数据集