当前位置: 首页 > news >正文

Android系统-进程-Binder2-Java层

引言:

对于Android系统,一般是从java层到native层,再到kernel驱动层,形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构,从java层到底层驱动层是怎么样的一个架构和原理的呢?

概念与理解

Binder整体架构

图中红色代表整个Java层 binder架构相关组件:
Binder类代表Server端,BinderProxy类代码Client端;
图中蓝色代表Native层Binder架构相关组件;
上层Java层的Binder逻辑是建立在Native层架构基础之上的,核心逻辑都是交予Native层方法来处理。
java层中framework层的ServiceManager类与Native层的功能并不完全对应,framework层的ServiceManager类的实现最终是通过BinderProxy传递给Native层来完成的

Binder类图

图中浅蓝色都是Interface,其余都是Class:

ServiceManager:通过getIServiceManager方法获取的是ServiceManagerProxy对象; ServiceManager的addService, getService实际工作都交由ServiceManagerProxy的相应方法来处理;
ServiceManagerProxy:其成员变量mRemote指向BinderProxy对象,ServiceManagerProxy的addService, getService方法最终是交由mRemote来完成。
ServiceManagerNative:其方法asInterface()返回的是ServiceManagerProxy对象,ServiceManager便是借助ServiceManagerNative类来找到ServiceManagerProxy;
Binder:其成员变量mObject和方法execTransact()用于native方法
BinderInternal:内部有一个GcWatcher类,用于处理和调试与Binder相关的垃圾回收。
IBinder:接口中常量FLAG_ONEWAY:客户端利用binder跟服务端通信是阻塞式的,但如果设置了FLAG_ONEWAY,这成为非阻塞的调用方式,客户端能立即返回,服务端采用回调方式来通知客户端完成情况。另外IBinder接口有一个内部接口DeathDecipient(死亡通告)。

Binder类分层

整个Binder从kernel至,native,JNI,Framework层所涉及的全部类

源码走读:

 注册服务:

获取服务:

相关文章:

Android系统-进程-Binder2-Java层

引言: 对于Android系统,一般是从java层到native层,再到kernel驱动层,形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构,从java层到底层驱动层是怎么样的一个架构和原理的呢? 概念与…...

体渲染原理及WebGL实现【Volume Rendering】

体渲染(Volume Rendering)是NeRF神经场辐射AI模型的基础,与传统渲染使用三角形来显示 3D 图形不同,体渲染使用其他方法,例如体积光线投射 (Volume Ray Casting)。本文介绍体渲染的原理并提供Three.js实现代码&#xff…...

VUE3组件

组件基础 {#components-basics} 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构: 这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的组件…...

【iOS】autoreleasepool

来说一下最近在了解的autoreleasepool吧&#xff0c;我们可能平时书写过许多脑残代码&#xff0c;其有很多的缺陷但是我们可能当时学的比较浅就也不太了解&#xff0c;就像下面这样的&#xff1a; for (int i 0; i < 1000000; i) {NSNumber *num [NSNumber numberWithInt…...

0基础学习VR全景平台篇 第80篇:Insta360 影石如何直播推流

一、下载Insta360 Pro APP 1、手机进入Insta360官网Insta360 | Action Cameras | 360 Cameras | VR Cameras&#xff0c;页面往下滑动到Insta360 Pro2相机处&#xff0c;点击相机图片进入详情页。详情页继续下滑到到手机APP处&#xff0c;根据自己的手机系统选择对应的客户端进…...

大语言模型之三 InstructGPT训练过程

大语言模型 GPT历史文章中简介的大语言模型的的发展史&#xff0c;并且简要介绍了大语言模型的训练过程&#xff0c;本篇文章详细阐述训练的细节和相关的算法。 2020年后全球互联网大厂、AI创业公司研发了不少AI超大模型&#xff08;百亿甚至千亿参数&#xff09;&#xff0c;…...

ChatGPT在自动化报告和数据分析中的应用如何?

ChatGPT在自动化报告和数据分析领域的应用正日益受到关注&#xff0c;这种强大的语言模型不仅可以加速报告生成的过程&#xff0c;还可以辅助数据分析&#xff0c;从而帮助企业和个人更高效地处理信息和做出决策。以下将详细探讨ChatGPT在自动化报告和数据分析中的应用。 **自…...

面试热题(三数之和)

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 输入&…...

在idea运行python文件

在idea运行python文件 如果在idea运行python文件而没有弹出run的选项&#xff0c;则点击File->Settings…->Plugins&#xff0c;在里面搜索python&#xff0c;如果没有显示则在Maketplace进行搜索&#xff0c; 接着Install&#xff0c;然后restart...

SQL - limit

介绍: limit 是限制的意思, 用于限制返回的查询结果的行数(可以通过limit指定查询多少行数据). MySQL支持limit语法, 用来完成分页. 用法: select 字段1, 字段2, ... from table_name limit offset, length;参数说明: offset: 起始行数, 从0开始计数, 如果省略, 则默认为…...

11. Redis基础知识

文章目录 一、概述二、数据类型STRINGLISTSETHASHZSET 三、数据结构字典跳跃表 四、使用场景计数器缓存查找表消息队列会话缓存分布式锁实现其它 五、Redis 与 Memcached数据类型数据持久化分布式内存管理机制 六、键的过期时间七、数据淘汰策略八、持久化RDB 持久化AOF 持久化…...

list模拟实现【引入反向迭代器】

文章目录 1.适配器1.1传统意义上的适配器1.2语言里的适配器1.3理解 2.list模拟实现【注意看反向迭代器】2.1 list_frame.h2.2riterator.h2.3list.h2.4 vector.h2.5test.cpp 3.反向迭代器的应用1.使用要求2.迭代器的分类 1.适配器 1.1传统意义上的适配器 1.2语言里的适配器 容…...

【华为OD机试】字符串变换最小字符串【2023 B卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 输入描述: 一串小写字母组成的字…...

ARTS 挑战打卡的第8天 ---volatile 关键字在MCU中的作用,四个实例讲解(Tips)

前言 &#xff08;1&#xff09;volatile 关键字作为嵌入式面试的常考点&#xff0c;很多人都不是很了解&#xff0c;或者说一知半解。 &#xff08;2&#xff09;可能有些人会说了&#xff0c;volatile 关键字不就是防止编译器优化的吗&#xff1f;有啥好详细讲解的&#xff1…...

第二课-一键安装SD-Stable Diffusion 教程

前言 看完这篇文章并跟着操作,就可以在本地开始 SD 绘图了。 理论上来说,这篇课程结束,想要画什么图都可以画了。 启动器介绍 SD 是开源的,可以在 github 上找到。但直接下载源码安装,非常费劲,而且因为国内外差异,就是我这样的秃头程序员也难以应对。 所以,我们改…...

Vue3 动态列 <el-table-column> 实现 formatter 的两种方法

文章目录 动态列实现动态列实现formatter第一种第二种方法 动态列实现 参考此篇文章 Vue3 动态列实现 动态列实现formatter 第一种 以此为例&#xff1a;传递该行的wxUserInfo字段&#xff08;对象&#xff09;中的nickName 假设该行 {prop: "wxUserInfo", label: …...

室温超导是什么?有哪些应用场景?

目录 一、应用场景&#xff1a;二、案例分析&#xff1a; 室温超导是指在室温下&#xff08;即约 20C 至 30C&#xff09;实现超导现象的材料。超导是指某些材料在低温下电阻为零的物理现象&#xff0c;室温超导材料是超导材料的一种。室温超导现象的发现和研究是超导领域的一个…...

Windows+VMware+Ubuntu+Anaconda+VMware Tools

Q1&#xff1a;Windows不支持***agent模拟器 A1&#xff1a;在VMware安装Ubuntu虚拟机 P1: 下载 VMware-workstation-full-15.5.6-16341506.exe 安装包&#xff08;峰哥电脑软件&#xff09; P2: 下载Ubuntu镜像 地址 ubuntu-18.04.6-desktop-amd64.iso P3&#xff1a;搭载镜…...

Xray配置文件详解

Xray配置文件详解 1.并发配置2.HTTP配置3.插件配置4.被动代理配置5.反连平台配置1.并发配置 在配置文件中可以用下面的配置改变漏洞探测的 worker 数量: parallel: 30 # 漏洞探测的 worker 数量,可以简单理解为同时有 30 个 POC 在运行这个值并非越大越好,因为高并发的情况…...

flink优化

1. 大状态调优 大状态调优&#xff1a;在我们的项目中&#xff0c;在做新老访客修复时&#xff0c;我们将每个mid的访问时间都存到了状态里面&#xff0c;在做回流用户数时&#xff0c;我们将每个用户的登录时间都存到了状态里面&#xff0c;导致了大状态问题&#xff0c;由于…...

别慌!React日期组件报错#31?手把手教你用Moment.js搞定日期格式转换

React日期组件报错#31的终极解决方案&#xff1a;从错误解码到Moment.js实战 最近在重构一个活动管理系统时&#xff0c;遇到了一个令人头疼的问题——每当点击编辑按钮回显表单数据时&#xff0c;控制台就会抛出Uncaught Invariant Violation: Minified React error #31。作为…...

为什么选择NHSE:深度解析动物森友会存档编辑器的5大核心功能

为什么选择NHSE&#xff1a;深度解析动物森友会存档编辑器的5大核心功能 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE NHSE存档编辑器为《集合啦&#xff01;动物森友会》玩家提供了前所未有的游…...

【GD32】DMA实战指南:串口数据高效收发与循环模式应用详解

1. DMA技术基础与GD32实现原理 第一次接触DMA这个概念时&#xff0c;我也被它绕晕过。简单来说&#xff0c;DMA&#xff08;Direct Memory Access&#xff09;就像是你请了个私人助理&#xff0c;专门负责帮你跑腿搬数据。想象一下&#xff0c;你正在写代码&#xff0c;突然需…...

【西门子】PLC_300F系列PLC_初始化MMC卡实验教程 S_L01

西门子300F安全PLC忘记安全密码没有读卡器如何清空MMC卡西门子300F PLC安全密码操作前注意事项本次实验使用的硬件设备将新硬件进行组态和IP分配使用此硬件配合MMC进行操作西门子300F PLC安全密码 300系列PLC在下载程序前必须设定一个安全密码&#xff0c;此密码会写在MMC卡里…...

高性能开源PLC编程平台:OpenPLC Editor工业自动化开发完整解决方案

高性能开源PLC编程平台&#xff1a;OpenPLC Editor工业自动化开发完整解决方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor OpenPLC Editor作为一款基于PLCopen国际标准的开源工业自动化编程平台&#xff0c;为工业…...

《思考,快与慢》读书笔记

《思考&#xff0c;快与慢》读书笔记 【免费下载链接】obsidian-weread-plugin Obsidian Weread Plugin is a plugin to sync Weread(微信读书) hightlights and annotations into your Obsidian Vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-weread-plugin…...

3分钟搞定!为Word添加APA第7版引用模板的终极指南

3分钟搞定&#xff01;为Word添加APA第7版引用模板的终极指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 还在为学术论文的APA格式烦恼吗&#xff…...

野火指南者STM32F103VET6上,用FreeModbus v1.6实现Modbus RTU从站,这5个文件是关键

野火指南者STM32F103VET6上FreeModbus移植的五个核心文件解析 移植FreeModbus协议栈到嵌入式平台时&#xff0c;很多开发者都会遇到相似的困惑——明明按照教程一步步操作&#xff0c;却总是卡在某些关键环节无法正常工作。本文将深入剖析野火指南者开发板&#xff08;STM32F10…...

【UV打印机】理光喷头组合实战指南:从16H配置看效率与精度的平衡

1. 理光喷头组合的核心价值与应用场景 第一次接触UV打印机时&#xff0c;我被各种喷头配置搞得晕头转向。直到亲自调试了十几台设备后才明白&#xff0c;理光喷头的组合艺术本质上是在速度、精度、成本三者之间走钢丝。以常见的16H配置为例&#xff0c;看似简单的"一头两色…...

构建基于千问3.5-2B的AI Agent:从理论到实现

构建基于千问3.5-2B的AI Agent&#xff1a;从理论到实现 1. 什么是AI Agent&#xff1f; AI Agent&#xff08;人工智能代理&#xff09;是一种能够自主感知环境、做出决策并执行行动的智能系统。不同于传统AI模型仅能完成单一任务&#xff0c;AI Agent更像是一个"数字员…...