以下几篇文章是较深入分析binder机制。

目录

1. Android - Binder机制 - ServiceManager

2. Android - Binder机制 - 普通service注册

3. Android - Binder机制 - 获得普通service

4. Android - Binder机制 - client和普通service交互

5. Android - Binder机制 - Binder框架总结

6. Android - Binder机制 - ProcessState和IPCThreadState

7. Android - Binder机制 - 驱动

Android - Binder机制 - Binder框架总结

UML

说明

1. 以中间的IXXX的垂直线为准,左边是客户端进程,它们的命名类似Bp***,右边是服务端进程,它们的命名类似Bn***;
2. 以中间的一条水平虚线为界线,上边执行的是具体业务,如我们之前讲到的AddServcie、GetService、StartPreview等,它们都是普通业务,下边执行的是数据交互,就是讲上边的业务数据打包成binder定义的数据包结构,然后通过binder驱动发送出去或者接收;
3. 第一篇的ServiceManager不是按照Bn***类构建的,但是只是我用的版本不是这样构建的,ServiceManager也完全可以用Bn***来构建,用Bp***和Bn***来构建,让程序员在看代码时更加轻松,代码结构也更加简洁,所以,基本上都是通过Bp***和Bn***来完成的;
4. Bn***和Bp***都继承了两个基类,一个是IXXX,一个是BBinder(或者BpRefBase),其实也正说明了BpXXX和BnXXX既要完成业务层的任务,也要执行数据传输相应的任务;
5. IPCThreadState是真正和驱动打交道的角色,一个进程可以有几个;
6. ProcessState的任务很简单,一是打开binder设备供IPCThreadState使用,一个是获得ServiceManager;
7. 客户端至少持有两个服务端,一个是ServiceManager,一个是它的业务服务端XXXService;

通过这个图,你是不是对复杂的binder找到了很多的规律了;

Android - Binder机制 - Binder框架总结相关推荐

  1. aidl使用_借助 AIDL 理解 Android Binder 机制——Binder 来龙去脉

    AIDL 是 Android Interface Definition Language(Android 接口定义语言)的缩写,它是 Android 进程间通信的接口语言.由于 Android 系统的 ...

  2. Android Binder机制(1):Binder架构分析

    从这篇博客开始,将进入Binder机制的分析系列,顺序是先讲解Binder机制的框架,理解了整体思想后,再深入分析各层的细节实现,最后会实现一个自己的本地服务. 1.Binder的历史 BeOS是Be ...

  3. 【Android Framework系列】第2章 Binder机制大全

    1 Binder简介 1.1 什么是Binder   Binder是Android中主要的跨进程通信方式.Android系统中,每个应用程序是由Android的Activity,Service,Bro ...

  4. android机制系列之二 Binder机制

    系列目录 https://blog.csdn.net/jzlhll123/article/category/7671581 引用了很多网上的图片,具体链接未能及时保存,致歉. 20180625 再探b ...

  5. 深入理解Binder机制4-bindService过程分析

    一.概述 1.1 Binder架构 Android内核基于Linux系统,而Linux系统进程间通信方式有很多,如管道,共g享内存,信号,信号量,消息队列,套接字.而Android为什么要用binde ...

  6. 理解Android Binder机制(3/3):Java层

    本文是Android Binder机制解析的第三篇,也是最后一篇文章.本文会讲解Binder Framework Java部分的逻辑. Binder机制分析的前面两篇文章,请移步这里: 理解Andro ...

  7. 理解Android Binder机制(1/3):驱动篇

    Binder的实现是比较复杂的,想要完全弄明白是怎么一回事,并不是一件容易的事情. 这里面牵涉到好几个层次,每一层都有一些模块和机制需要理解.这部分内容预计会分为三篇文章来讲解.本文是第一篇,首先会对 ...

  8. Android Binder机制(1501210451 张志康)

    本文主要分析native层和Java层的Android binder通信机制. binder是Android最为常见的进程通信机制之一,其驱动和通信库是binder的核心,分别由C和C++编写,应用程 ...

  9. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

最新文章

  1. Spring中bean标签的属性和值:
  2. magic_quotes_gpc和magic_quotes_runtime的区别和用法详解
  3. 深圳出台数据中心PUE新政,或将开启千亿级节能市场
  4. muduo网络库学习(二)对套接字和监听事件的封装Channel
  5. [Socket]BSD socket简易入门
  6. 利用丁香园数据生成疫情分布地图(R语言)| 博文精选
  7. win10 使用ssh连接服务器 ‘’Bad owner or permissions on C:\\Users\\Administrator/.ssh/config‘’
  8. linux怎么不更新内核,Linux升级时不升级内核的方法
  9. zibll子比主题v5.4免授权修复版
  10. dz手机版空白显示index.php,关于Discuz x3.3页面空白解决方法
  11. UI设计插画素材|苹果设备展示
  12. BZOJ4303 : 数列
  13. 网络运维超融合服务器,15. 通过 Openfiler 软件:配置 ISCSI 和
  14. 11.高性能MySQL --- 可扩展MySQL
  15. yudian温控表a1温度怎么补偿_贴片电容怎么确定型号
  16. 指向指针的指针与二维数组的区别
  17. CSS3实现的几个小loading效果
  18. 简历推荐_12位AI产品经理
  19. 秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!
  20. 金融数据安全分类分级解决方案

热门文章

  1. WebAssembly系列1-从 ASM.JS 到 WebAssembly
  2. 文本检查点web_reg_find和web_find两个函数的区别
  3. LR学习笔记七 之 LR录制sql脚本
  4. 好朋友的爬虫共享资料,真佩服
  5. Java JDK新特性探究-精简的JRE
  6. G2 可视化引擎-统计图表
  7. Excel Spreadsheet 转换web HTML 5 展示
  8. 多目标跟踪评价标准(MOT)
  9. mysql 首次连接慢_mybatis+mysql,第一次数据库连接很慢怎么回事?
  10. POJ 2182 Lost Cows