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

深入探讨Android系统中Binder的Server和Client编程机制 在示例中,我们假设code为1表示客户端发起的请求,然后从传入的Parcel对象中读取客户端传递的数据。在Binder中,Server是提供服务的进程,Client是访问服务的进程。要使Server和Client进行通信,我们需要在AndroidManifest.xml文件中声明Service组件,并在Server和Client中分别启动和绑定Service。在Binder中,Server是提供服务的一方。在示例中,我们简单地将收到的消息打印到日志中,并将响应字符串写入reply参数中,以便返回给客户端。 阅读详情

以下几篇文章是较深入分析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机制 - client和普通service交互

UML及说明



和前两篇结构基本一致,只说明特别的几个地方:

1. Camera客户端执行startPreview()是通过BpCamera来完成的;

2. ICamera定义了摄像头操作的接口,它是抽象类,BpCamera是客户端的实现;

3. CameraService: :Client是服务端,每个Camera客户端对应一个CameraService: :Client;

4. BnCamera服务端对ICamera的实现;

5. BBinder在之前没见过,它服务端对IBinder的实现,主要接口是onTransact();

6. 这个图BpBinder和BBinder应该各对应一组ProcessState和IPCThreadState,因为它们存在于每个binder进程,不管是客户端还是服务端;


交互流程

1. Camera的startPreview()调用BpCamera的startPreview();
2. BpCamera执行remote()->transact(START_PREVIEW, data, &reply),而remote()就是BpBinder;
3. BpBinder里的mHandle是CameraService::Client的handle索引;
4. Camera进程的IPCThreadState的transact转发请求;
5. 服务端的IPCThreadState通过talkWithDriver接收到上面的请求,当然这其中mHandle起到了很重要的作用;
6. BBinder的transact和onTransact和BnCamera的onTransact依次执行;
7. BnCamera的onTransact中调用了startPreview()函数,而这个函数就是CameraService::Client的startPreview();
8. 返回值按照相反的路径返回;



【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 【汇编】TSR内存驻留程序实现与删除及热键设置——以实现时钟为例 最近完成了一个关于时钟中断驻留的汇编大作业,对于TSR很是感兴趣,查阅了不少资料,发现现在很少相关的内容资料。尤其是TSR删除这一块几乎找不到在低的水平完全正确的做法,下面我对于TSR的删除我会介绍一种几乎小程序可以完成的方法。当然,标题中的TSR实现,热键设置我也会一一介绍。 阅读详情

相关推荐

数字电路基础(CMOS电路、低功耗方法)

文章目录一、CMOS器件1.1.CMOS反相器1.2. CMOS与非门1.3.CMOS或非门1.4 CMOS与门和CMOS或门二、CMOS电路参数——功耗 一、CMOS器件 1.1.CMOS反相器 CMOS反相器实现非门功能,由一个PMOS管和一个NMOS管组成,其逻辑电路图如下: 其真值表如下: In PMOS NMOS Out 0 √ 导通 ×关闭 1 1 ×关闭 √...

Mr.翟的博客 1万+

Android Binder IPC分析

1.binder通信概述     binder通信是一种client-server的通信结构,     1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用;     2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的;     3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Pa

qingtian_zhen的专栏 1960

稀疏数据分析:马蹄估计量及其理论性质

稀疏数据分析:马蹄估计量及其理论性质基本框架half-Cauchy分布为什么它叫马蹄估计量后验均值、shrinkage与κ\kappaκθ\thetaθ的边缘先验分布的阶马蹄估计的一致性收敛速率Clarke-Barron(1990)引理马蹄估计的最优收敛速率 这是对The horseshoe estimator for sparse signal这篇论文的回顾,这篇论文在Modern Bayesian statistics与Bayesian Machine Learning领域比较重要,它提出了一种新的先验

一个不愿透露姓名的博客 3797

Android Binder机制原理(史上最强理解,没有之一)

Binder是Android系统进程间通信(IPC)方式之一

可乐 12万+

ComfyUI-Impact-Subpack插件安装避坑指南:为什么你的UltralyticsDetectorProvider节点还是找不到?

本文深入解析了ComfyUI-Impact-Subpack插件的安装与排障问题,特别是针对UltralyticsDetectorProvider节点缺失的常见问题提供了详细的解决方案。从底层机制到高阶应用,涵盖了手动安装、模型配置、性能优化等关键步骤,帮助用户彻底解决插件依赖关系断裂问题。

Jerry的专栏 1152

从ORCAP-1589警告看Cadence ORCAD的DRC设置:如何避免‘网络别名’引发的潜在短路风险

本文深入解析Cadence ORCAD中ORCAP-1589警告的深层含义,探讨网络别名可能引发的短路风险及DRC设置优化方案。通过分析网络别名的设计意图、DRC规则配置及最佳实践,帮助工程师有效规避设计风险,提升电路设计的可靠性和规范性。

weixin_34194829的博客 297

Android 12 S Binder原理之BpBinder,BnBinder以及IInterface介绍

Binder机制是Android系统提供的跨进程通讯机制。Client进程希望可以与Server进程沟通,但由于是跨进程,所以需要借助Binder驱动进程通信。Binder由以下模块组成:* Binder驱动* Binder Server端 - Server进程* Binder Client端 - Client进程* ServiceManager - 管理者。

weixin_41028555的博客 2802

Jenkins插件下载慢?3分钟搞定国内镜像加速(含华为/腾讯/清华源对比)

本文详细介绍了如何通过国内镜像源加速Jenkins插件下载,包括华为云、腾讯云和清华源等主流镜像站的性能对比及一键配置方案。通过实测数据展示华为云镜像站表现最佳,下载速度达19.4MB/s,并提供sed命令、管理界面配置和Docker定制三种高效加速方案,帮助开发者快速解决插件下载慢的问题。

sql99的博客 320

binder通信过程中,服务端和客户端异常处理

转载地址:https://www.jianshu.com/p/2bd7eb20e4f1

c657674129的博客 591

用yolov8训练自己的模型并调取摄像头实时检测,新手小白超友好教程!逻辑梳理,从0开始逐步实操❤

帮新手小白学会用yolov8,包含多篇高质量博客整理

Lhhhhds的博客 2941

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式)

unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。

灵境引路人 4036

Android - Binder机制 - ProcessState和IPCThreadState

以下几篇文章是较深入分析binder机制。 目录 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - client和普通service交互 5. Android - Bi...

淡淡的宁静的博客 1172

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 145

Android - Binder机制

Android - Binder机制  学习要点 : 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - client和普通service交互 5. Android - B

颇锐克(公众号:颇锐克科技共享) 493

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android - Binder机制 - Binder框架总结

以下几篇文章是较深入分析binder机制。 目录 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - client和普通service交互 5. Android

等等... 大雄,有啦! 4354

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文将简

老罗的Android之旅 10万+

Android - Binder机制 - ServiceManager

以下几篇文章是较深入分析binder机制。 目录 1. Android - Binder机制 - ServiceManager 2. Android - Binder机制 - 普通service注册 3. Android - Binder机制 - 获得普通service 4. Android - Binder机制 - client和普通service交互 5. Android -

等等... 大雄,有啦! 4576

Android Binder机制基本原理

一、概述 Binder是什么? 从功能上讲:Binder是一种在Android设备上进行IPC(Inter-Process Communication,进程间通信)的主要方式,主要用来实现跨进程通信。 从代码上讲:Binder是一个类,实现了IBinder接口 为什么需要Binder? 进程隔离:为了保证安全性&独立性,一个进程不能直接操作或者访问另一个进程,即Android的进程是相互独立、隔离的 IPC(跨进程通信):在实际开发中,经常需要进程间的合作、交互和通信 进程空间的分配: 用

康康 2365

Binder通信机制

Binder简介 Binder是android系统中实现的一种高效的IPC机制,平常接触到的各种XxxManager,以及绑定Service时都在使用它进行跨进程操作。 它的实现基于OpenBinder项目,属于核心库。framework层的Binder通信用到的相关java类型都是对应C++类型的一个封装。 这里framework层就是android提供的java api层,类似j

tmchongye的专栏 1万+

【安卓BInder底层2】对Binder的理解

一、BInder是干嘛的? binder是用来通信的,分为client端和sever端。client和sever可在同一进程,也可以不在同一进程中。 client端可向sever端发起远程函数调用。sever端也可以给client端返回数据。 二、binder存在的意义是什么?为啥选择它? 1、一套完善的跨进程通信方式 Linux提供了很多跨进程方式,在安卓的Framework层使用也有很多,这些都是根据不同的场景、用途进行合理筛选使用的。但是在这些跨进程方式在安卓端的应用层就会有很多安全问题了(如下图)

dev晴天的博客 849

Android中的binder机制分析二:以精简的语句来提炼binder

一、 个人心得: 网上很多讲binder的书籍和博客,喜欢一上来就从智能指针开始,我个人觉得,对于binder机制的研究,没有必要去深入钻研智能指针,把binder中所有的sp和wp都当成普通的指针就行了,其次,另一个就是一上来开始分析源码, 然后大家就会被各种名词给混淆: BnService, BpService, BBinder, Service Manager, binder driver,...

achina2011jy的博客 363

笔记:Binder通信机制

https://cloud.tencent.com/developer/article/1015286 Binder简介 Binder是android系统中实现的一种高效的IPC机制,平常接触到的各种XxxManager,以及绑定Service时都在使用它进行跨进程操作。 它的实现基于OpenBinder项目,属于核心库。framework层的Binder通信用到的相关java类型都是对应C+...

406

浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manage

浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manage

ufryyfdf的博客 308

Android Binder通信原理(一):简介

在创建时分配一个page大小的内存,缓存区大小比较有限;考虑 PIPE_BUF 和原子操作;信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信;无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信;常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段;

私房菜 2277

Android深入浅出之Binder机制

Android深入浅出之Binder机制 一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。 我们这里将以MediaService的例子来分析Binder的使用: lServiceManager,这是An...

测试0901-1 179
上一篇: Android - Binder机制 - 获得普通service
下一篇: Android - Binder机制 - Binder框架总结
G机器猫
博客等级 码龄16年 106粉丝 74原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值