原始网页直通车

文章目录

  • Binder 是什么?
  • 为什么选择 Binder ?
  • Binder 通信流程
  • Android 中使用 Binder 的场景
  • 参考链接

Binder 是什么?

  • Binder :黏合剂,可以理解为黏合了两个不同的进程。

为什么选择 Binder ?

我们知道 Android 虚拟机是基于 Linux 实现的,而 Linux 的 IPC 通信主要有管道、消息队列、信号量、socket、共享内存等。

我们在开发 APP 时都会要求性能好,数据安全且传输快,所以我们首要从性能和安全性这两方面来看:

性能

  • socket 作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信。
  • 消息队列和管道采用 存储-转发 方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。
  • 共享内存虽然无需拷贝,但控制复杂,难以使用。
  • Binder 基于 Client-Server 通信模式,传输过程只需一次拷贝,性能较好,效率虽然比共享内存的零次要低,但比管道和 socket 的两次要高。

安全性

BinderClient-Server 通信模式,为发送方添加 UID/PID 身份,既支持 实名Binder 也支持 匿名Binder ,保证了跨进程通讯的安全。

引用一张图:

Binder 通信流程

  1. ServiceServiceManager 中注册
  2. Client 想要调用 Service 的方法,需要先获取 Service 对象, ServiceManager 会返回给它一个代理对象,即 Proxy
  3. Client 调用 Proxy 的方法, ServiceManager 会帮它调用 Service 对应的方法,并把结果返给它。

Android 中使用 Binder 的场景

ActivityManagerServicePackageManagerServiceWindowManagerServiceXXXManagerService 形式的基本都会用到,一般会在 SystemService 来注册这些系统服务。

其它的如 NotificationCompatSideChannelServiceContentProviderNative 等等,都有引用到。

参考链接

Android跨进程通信:图文详解 Binder 机制 原理

谈谈你对 Binder 的理解相关推荐

  1. 谈谈对APC的一点理解

    谈谈对APC的一点理解 异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助. 1) APCs允许用户程序和系统元件在一个进 ...

  2. 面试精讲之面试考点及大厂真题 - 分布式专栏 04 谈谈你对分布式的理解,为什么引入分布式?

    04谈谈你对分布式的理解,为什么引入分布式? 引言 刚刚毕业第一份工作,没接触过分布式微服务相关的知识,后来换工作才了解到这些,面试官看了我简历里写了分布式相关,就开始揪住这个问题问,虽然一知半解地说 ...

  3. JVM面试1 :谈谈你对Java的理解

    谈谈你对Java的理解 如何查看字节码? 使用 javap

  4. MVVM是什么?谈谈你对MVVM的理解?

    MVVM是什么?谈谈你对MVVM的理解? 我的理解MVVM它就是一种前端开发的架构模式,作用就是为了让前端业务逻辑和HTML代码更加分离.它的核心思想就是把每个页面分成了M(Model数据模型).V( ...

  5. 分布式 - 谈谈你对分布式的理解,为什么引入分布式?

    不啰嗦,我们直接开始! 划重点: 真正了解分布式系统的概念,日后工作中具有分布式系统设计思想. 能否在设计中对系统稳定性方面考虑周全. 能构建高 QPS 健壮的系统架构. 1.面试官:那谈谈你对分布式 ...

  6. 结合阿里云 FC 谈谈我对 FaaS 的理解

    本文首发于政采云前端团队博客:结合阿里云 FC 谈谈我对 FaaS 的理解 https://www.zoo.team/article/my-understanding-of-faas 进入主题之前,先 ...

  7. 谈谈对数据治理的理解

    谈谈对数据治理的理解 一.什么是数据治理?为什么要做数据治理? 1.数据标准 2.数据模型 3.元数据 4.主数据 5.数据质量管理 二.怎样做数据治理 一.什么是数据治理?为什么要做数据治理? 数据 ...

  8. 谈谈你对 Spring 的理解

    谈谈你对 Spring 的理解 Spring 是一个开源框架,为简化企业级应用开发而生. Spring 可以是使简单的 JavaBean 实现以前只有 EJB 才能实现的功能. Spring 是一个 ...

  9. 谈谈对CAP定理的理解

    谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个 ...

最新文章

  1. mongoose手动生成ObjectId
  2. 路由器简介一:路由器概念、基本结构及分类
  3. Auto Encoder用于异常检测
  4. 回归树与基于规则的模型(part2)--简单回归树
  5. linux 创建组,创建用户
  6. Java基础知识——Java集合详解
  7. [vue] 如果现在让你从vue/react/angularjs三个中选择一个,你会选哪个?说说你的理由
  8. 微软发布8月安全公告 包含13个补丁修补22个漏洞
  9. java程序设计_十分钟说课—Java程序设计(耿祥义)
  10. 工单发料,退料等一些物料的移动
  11. 沪江swf文件怎么打开_.swf文件的打开方法
  12. 三菱PLC的MX_COMPONENT安装过程
  13. 自动化测试全流程总结
  14. Python 中模拟键盘输入
  15. 华海清科在科创板上市:2020年扭亏为盈,清华为实际控制人
  16. 使用Easyexcel对Excel进行读写操作
  17. 华为机试题(python版本)
  18. 粉象生活优惠券项目优势
  19. 智慧路灯杆建设完成后的运营内容及运营方式有哪些?
  20. 28.从键盘输入10个正负相间的整数,输出个位数是奇数.十位数是偶数的所有数

热门文章

  1. 学习嵌入式系统的误区
  2. Linux文件的rwx含义,Linux文件权限rwx简单了解(示例代码)
  3. MyEclipse:MyEclipse软件界面简介(菜单栏、工具栏、侧边栏、工作区)之详细攻略
  4. GitHub上最牛逼的Java教程,标星yyds:算法,linux视频教程迅雷下载
  5. java之细究String(计算机万物皆二进制序列)
  6. 考计算机二级能带帽子吗,教资报名要注意这几点,否则无法通过审核,考区问题最容易出错...
  7. 从固定图形管线到可编程流处理器
  8. LSTM缓解RNN梯度消失
  9. 第08章_面向对象编程(高级)
  10. 深度学习神经网络各网络简介及资料汇总 (matlab :deep network designer )