谈谈你对 Binder 的理解
原始网页直通车
文章目录
- Binder 是什么?
- 为什么选择 Binder ?
- Binder 通信流程
- Android 中使用 Binder 的场景
- 参考链接
Binder 是什么?
Binder
:黏合剂,可以理解为黏合了两个不同的进程。
为什么选择 Binder ?
我们知道 Android 虚拟机是基于 Linux 实现的,而 Linux 的 IPC 通信主要有管道、消息队列、信号量、socket、共享内存等。
我们在开发 APP 时都会要求性能好,数据安全且传输快,所以我们首要从性能和安全性这两方面来看:
性能
socket
作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信。- 消息队列和管道采用 存储-转发 方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。
- 共享内存虽然无需拷贝,但控制复杂,难以使用。
Binder
基于Client-Server
通信模式,传输过程只需一次拷贝,性能较好,效率虽然比共享内存的零次要低,但比管道和socket
的两次要高。
安全性
Binder
的 Client-Server
通信模式,为发送方添加 UID/PID
身份,既支持 实名Binder
也支持 匿名Binder
,保证了跨进程通讯的安全。
引用一张图:
Binder 通信流程
Service
在ServiceManager
中注册Client
想要调用Service
的方法,需要先获取Service
对象,ServiceManager
会返回给它一个代理对象,即Proxy
Client
调用Proxy
的方法,ServiceManager
会帮它调用Service
对应的方法,并把结果返给它。
Android 中使用 Binder 的场景
ActivityManagerService
、 PackageManagerService
、 WindowManagerService
等 XXXManagerService
形式的基本都会用到,一般会在 SystemService
来注册这些系统服务。
其它的如 NotificationCompatSideChannelService
、 ContentProviderNative
等等,都有引用到。
参考链接
Android跨进程通信:图文详解 Binder 机制 原理
谈谈你对 Binder 的理解相关推荐
- 谈谈对APC的一点理解
谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...
- 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?
04谈谈你对分布式的理解,为什么引入分布式? 引言 刚刚毕业第一份工作,没接触过分布式微服务相关的知识,后来换工作才了解到这些,面试官看了我简历里写了分布式相关,就开始揪住这个问题问,虽然一知半解地说 ...
- JVM面试1 :谈谈你对Java的理解
谈谈你对Java的理解 如何查看字节码? 使用 javap
- MVVM是什么?谈谈你对MVVM的理解?
MVVM是什么?谈谈你对MVVM的理解? 我的理解MVVM它就是一种前端开发的架构模式,作用就是为了让前端业务逻辑和HTML代码更加分离.它的核心思想就是把每个页面分成了M(Model数据模型).V( ...
- 分布式 - 谈谈你对分布式的理解,为什么引入分布式?
不啰嗦,我们直接开始! 划重点: 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想. 能否在设计中对系统稳定性方面考虑周全. 能构建高 QPS 健壮的系统架构. 1.面试官:那谈谈你对分布式 ...
- 结合阿里云 FC 谈谈我对 FaaS 的理解
本文首发于政采云前端团队博客:结合阿里云 FC 谈谈我对 FaaS 的理解 https://www.zoo.team/article/my-understanding-of-faas 进入主题之前,先 ...
- 谈谈对数据治理的理解
谈谈对数据治理的理解 一.什么是数据治理?为什么要做数据治理? 1.数据标准 2.数据模型 3.元数据 4.主数据 5.数据质量管理 二.怎样做数据治理 一.什么是数据治理?为什么要做数据治理? 数据 ...
- 谈谈你对 Spring 的理解
谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生. Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 ...
- 谈谈对CAP定理的理解
谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个 ...
最新文章
- mongoose手动生成ObjectId
- 路由器简介一:路由器概念、基本结构及分类
- Auto Encoder用于异常检测
- 回归树与基于规则的模型(part2)--简单回归树
- linux 创建组,创建用户
- Java基础知识——Java集合详解
- [vue] 如果现在让你从vue/react/angularjs三个中选择一个,你会选哪个?说说你的理由
- 微软发布8月安全公告 包含13个补丁修补22个漏洞
- java程序设计_十分钟说课—Java程序设计(耿祥义)
- 工单发料,退料等一些物料的移动
- 沪江swf文件怎么打开_.swf文件的打开方法
- 三菱PLC的MX_COMPONENT安装过程
- 自动化测试全流程总结
- Python 中模拟键盘输入
- 华海清科在科创板上市:2020年扭亏为盈,清华为实际控制人
- 使用Easyexcel对Excel进行读写操作
- 华为机试题(python版本)
- 粉象生活优惠券项目优势
- 智慧路灯杆建设完成后的运营内容及运营方式有哪些?
- 28.从键盘输入10个正负相间的整数,输出个位数是奇数.十位数是偶数的所有数
热门文章
- 学习嵌入式系统的误区
- Linux文件的rwx含义,Linux文件权限rwx简单了解(示例代码)
- MyEclipse:MyEclipse软件界面简介(菜单栏、工具栏、侧边栏、工作区)之详细攻略
- GitHub上最牛逼的Java教程,标星yyds:算法,linux视频教程迅雷下载
- java之细究String(计算机万物皆二进制序列)
- 考计算机二级能带帽子吗,教资报名要注意这几点,否则无法通过审核,考区问题最容易出错...
- 从固定图形管线到可编程流处理器
- LSTM缓解RNN梯度消失
- 第08章_面向对象编程(高级)
- 深度学习神经网络各网络简介及资料汇总 (matlab :deep network designer )