Android Binder机制简述

article/2025/10/28 21:52:00

一、Android binder是什么?

  1. Android平台上的一种跨进程通信(IPC)机制

  2. 从OpenBinder演化而来

  3. 从Android应用层角度来说,Binder是客户端和服务端进行通信的媒介

二、IPC原理

在这里插入图片描述

每个Android进程,只能运行在自己的进程所拥有的虚拟地址空间
Client进程与Server进程通信,利用进程间可共享的内核空间来完成底层通信工作

三、Android C/S通信机制

在这里插入图片描述

  1. Server是Service的提供者,提供的Service需要在Server Manager进行注册;Server可以注册一个或多个Service
  2. Client是Service的使用者,使用前需要向Server Manager申请服务
  3. Client获取到Service后,可以调用Server服务了

四、Binder通信模型

在这里插入图片描述

1. 注册服务

在这里插入图片描述

  1. 首先Server在自己的进程向Binder驱动申请创建Service的Binder实体

  2. Binder驱动为这个Service创建位于内核的Binder实体节点和Binder引用

  3. Server通过Binder驱动将Server名字和Service的Binder引用打包发送给ServiceManager

  4. ServiceManager收到数据包后,取出Service的名字额引用,写入一张查找表

2.获取服务

在这里插入图片描述

  1. Client利用hanle为0的应用找到ServiceManager
  2. 向ServiceManage发送XXXService的访问申请
  3. ServiceManager从请求包中获取XXXService的名字,在查找表中找到对应的条目,取出对应的Binder引用
  4. ServiceManager将XXXService的Binder引用回复给Client

3.使用服务

在这里插入图片描述

  1. Client和Server既是发送方,又是接收方

  2. 发送方通过自身的Binder实体进行发送操作,把数据通过接收方的Binder引用发送给接收方

  3. Binder驱动会处理这个发送请求,利用内核空间进程共享的机制:

    (1) 把发送方的数据写入缓存(binder_write_read.write_buffer)(对于接收方来说为读缓存区)

    (2) 接收方之前一直在阻塞状态中,当写缓存有数据,则会读取数据,执行命令操作

    (3) 接收方执行完后,会把返回结果同样采用写入缓存区(对于发送方为读缓存区)

五、Binder机制的关键概念

在这里插入图片描述

  1. Binder实体对象:Binder服务的提供者,类型是BBinder,也称为BBinder对象
  2. Binder引用对象:Binder实体对象在客户端进程的代表,类型是BpBinder,也称BpBinder对象
  3. Binder代理对象:代理对象也称接口对象,主要是为客户端的上层服务提供接口服务,类型是IInterface;Android将Binder的引用对象和代理对象分开的好处是一个Binder引用对象可以有多个代理对象,方便应用层使用
  4. IBinder对象:实体对象和引用对象的统称,因为BBinder和BpBinder都继承自IBinder

代理对象,方便应用层使用
4. IBinder对象:实体对象和引用对象的统称,因为BBinder和BpBinder都继承自IBinder


http://chatgpt.dhexx.cn/article/KPWITuRY.shtml

相关文章

不得不说的Android Binder机制与AIDL

说起Android的进程间通信,想必大家都会不约而同的想起Android中的Binder机制。而提起Binder,想必也有不少同学会想起初学Android时被Binder和AIDL支配的恐惧感。但是作为一个Android开发者,Binder是我们必须掌握的知识。因为它是构架整个Andr…

FrameWork-进程间通信之Binder机制AIDL

进程间通信之Binder机制 Binder是什么?为什么要使用Binder?Binder原理Binder使用实战 1、Binder是什么 Binder 是一种进程间通信机制,基于开源的 OpenBinder 实现;OpenBinder 起初由 Be Inc. 开发,后由 Plam Inc. 接…

Android 应用是如何启动 binder 机制的?

文章目录 应用是什么时候支持 binder 机制的应用大致启动流程是什么总结问题 应用是什么时候支持 binder 机制的 binder 都知道是用来做跨进程服务的,应用内可以通过binder 跟系统组件进行交互。如 AMS Service aidl 等那么可以思考一下,当 Activity on…

Android Binder机制介绍

转载于:http://www.cnblogs.com/zc9527/p/5638688.html 备注:该博客简单介绍类型的 做过Android开发的同学可能有些体会,入门初期,工作内容主要是实现各式各样的UI界面,以及实现应用的业务逻辑。在这个阶段&#xff0c…

Android跨进程通信Binder机制与AIDL实例

文章目录 进程通信1.1 进程空间划分1.2 跨进程通信IPC1.3 Linux跨进程通信1.4 Android进程通信 Binder跨进程通信2.1 Binder简介2.2 Binder驱动2.3 Binder原理 AIDL编程Demo3.1 服务端3.2 客户端 在操作系统中,进程与进程间的内存和数据都是不共享的。这样做的目的&…

Android-Binder机制

Binder机制是什么: Binder机制是​ Android系统中进程间通讯(IPC)的一种方式,Android中ContentProvider、Intent、aidl都是基于Binder。 为什么要用Binder机制: 在提及Binder之前,我们先看看我们平时开发…

深入理解Binder机制

Binder框架 Binder是什么 1.Binder是一种进程间通信机制; 2.Binder是一个虚拟物理设备驱动; 3.Binder是一个能发起通信的Java类; Binder与传统IPC对比 Binder共享内存Socket性能内存拷贝一次无需拷贝内存拷贝两次特点基于C/S架构 易用性高…

Android Binder机制原理

一 Android与Linux通信机制的比较 虽然Android继承使用Linux的内核,但Linux与Android的通信机制不同。 在Linux中使用的IPC通信机制如下: 1.管道(Pipe):点对点通信,因为采用存储转发方式,需要拷…

Android——Binder机制

1.简介 Binder是什么? 机制:Binder是一种进程间通信的机制 驱动:Binder是一个虚拟物理设备驱动 应用层:Binder是一个能发起进程间通信的JAVA类 Binder就是Android中的血管,在Android中我们使用Activity,Service等组…

Android Binder机制之一(简介)

目录 前言 一、Android 进程间通信方式 二、Binder架构图 三、Binder涉及角色 3.1 Binder驱动 3.2 Binder实体 3.3 Binder引用 3.4 远程服务 3.5 ServiceManager守护进程 四、涉及源码 前言 这是本人第N次看Binder 相关知识了,其实每次看都有新的收获&…

binder机制原理android,Binder机制1---Binder原理介绍

1.Binder通信机制介绍 这篇文章会先对比Binder机制与Linux的通信机制的差别,了解为什么Android会另起炉灶,采用Binder。接着,会根据 Binder的机制,去理解什么是Service Manager,在C/S模型中扮演什么角色。最后&#x…

理解Binder机制

前言 ​ Android中Binder机制的重要性不言而喻,从IPC角度来看, Binder是一种跨进程通信方式,Binder也可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder;从Android framework角度来说,Binder是Serv…

Android--Binder机制

Android--Binder机制 1.简介 Binder是什么? 机制:Binder是一种进程间通信的机制 驱动:Binder是一个虚拟物理设备驱动 应用层:Binder是一个能发起进程间通信的JAVA类 Binder就是Android中的血管,在Android中我们使用…

Binder 机制

Binder 是 Android 系统进程间通信(IPC:Internet Process Connection)方式之一。Linux 已经拥有的 IPC 手段包括: 管道(Pipe)、信号(Signal)、跟踪(Trace)、插…

Android Binder机制

Android Binder机制 什么是BinderBinder一般的IPC原理动态内核可加载模块内存映射运行机制四大角色注册服务使用服务 对象的传递Binder通信 什么是Binder 要理解binder,先要知道IPC,Inter-process communication ,也就是进程中相互通信,Bind…

Binder机制

直观来讲,Binder是Android中的一个类,它实现了IBinder接口。从IPC角度来看,Binder是Android中一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在Linux中没…

Binder机制原理

前言 本篇文章记录本人对Binder的学习,因为本人能力有限,若有错误,还请批评指正。 binder的使用文章推荐 1.Binder是什么? 可以理解是为Android的血管。是一种进程间通信的机制。比如Activity,Service需要和AMS通信…

Binder机制(非常好理解)

Binder是一种进程间通信机制,用来实现不同进程之间的通信。 Binder机制主要由四大块组成,分别是客户空间的client、server,serverManager,还有内核的Binder驱动。 下面我先看下图,利于理解Binder内部工作机制&#x…

Android进程间通信之一:Binder机制学习

Binder机制学习 Binder驱动Binder核心APILinux 使用两级保护机制:0 级供系统内核使用,3 级供用户程序使用。 Linux 下的传统 IPC 通信原理Linux 下的传统 IPC 通信原理Binder通信过程ServiceManager进程启动MMAP Binder驱动 binder驱动在以misc设备进行注…

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

前言 如果你接触过 跨进程通信 (IPC),那么你对Binder一定不陌生虽然 网上有很多介绍 Binder的文章,可是存在一些问题:浅显的讨论Binder机制 或 一味讲解 Binder源码、逻辑不清楚,最终导致的是读者们还是无…