【Android】Binder的理解

news2024/11/26 0:30:25

1.Binder是什么?

对于android而言,是跨进程传输的通道,是封装好的java类,可以直接继承和使用。

从组成、模型来讲,我认为是连接Server层、Client层、ServerManager层的纽带,也是驱动。

2.Binder的基础概念

2.1 进程空间

进程空间:用户空间(不可共享)和内核空间(可共享)。

linux本身用copy_from_user()与copy_to_user(),用俩次拷贝进行跨进程通讯。

copy_from_user():将A进程的用户空间的数据拷贝到内核空间。

copy_to_user():将内核空间的数据拷贝到B进程的用户空间

以上需要拷贝2次,而Binder只需要拷贝1次。

 

2.2 Binder跨进程

2.2.1 流程

service端在binder注册服务到serverManager,client端通过binder获取serverManager里的服务。

2.2.2 作用

Binder.c :连接进程,调用mmap()方法,创建内核缓存区和接受数据缓存区。

ServiceManager.c:通过binder_loop()创建循环请求队列,获取数据和解析binder,关机才会退出循环。

3.Android端与Binder

1.ContentProvider,内部有个ContentProviderNavite与Binder通信

2.Aidl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/336508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RMI攻击Registry的两种方式

概述 RMI(Remote Method Invocation) :远程方法调用 它使客户机上运行的程序可以通过网络实现调用远程服务器上的对象,要实现RMI,客户端和服务端需要共享同一个接口。 基础 Client 和 Regisry 基于 Stub 和 Skeleton 进行通信&#xff0c…

ContextCapture Master 倾斜摄影测量实景三维建模

ContextCapture实景建模大师是一套无需人工干预,通过影像自动生成高分辨率的三维模型的软件解决方案。它集合了全球最先进数字影像处理、计算机虚拟现实以及计算机几何图形算法,在易用性、数据兼容性、运算性能、友好的人机交互及自由的硬件配置兼容性等…

花1分钟配置远程DEBUG,开发效率翻倍,妹子直呼绝绝子

当把一个工程部署到远程服务器后有可能出现意想不到错误,日志打印过多或者过少都影响问题排查的效率,这个时候可以通过远程调试的方式快速定位bug,提升工作效率。本文主要讲解如何使用Idea开发工具进行远程调试,希望对你有帮助。 …

微信小程序授权登录流程

自我介绍我是IT果果日记,微信公众号请搜索 IT果果日记一个普通的技术宅,定期分享技术文章,欢迎点赞、关注和转发,请多关照。首先,我们要了解什么是微信小程序登录?它的作用是什么?用户登录微信小…

使用Fetch时,post数据时,后端接收的Content-Type为text/plain

在使用 Fetch做一个前端的post请求时,直接从网上抄了一段代码 export async function postData(url, data){const response await fetch(url, {method: POST, // *GET, POST, PUT, DELETE, etc.mode: no-cors, // no-cors, *cors, same-originheaders: { Content-…

xshell 工具连接不上本地的 Centos 7虚拟机,4种情况,逐个分析

导读 小编之前使用过 VMware workstation 工具搭建 Centos 7 版本的虚拟机集群,各项功能都正常,用完了也就清除了(节约本地空间)。因为最近学习大数据,需要从新安装虚拟机,结果发现并不如第一次那么顺利。所…

TDengine时序数据库的简单使用

最近学习了TDengine数据库,因为我们公司有硬件设备,设备按照每分钟,每十分钟,每小时上传数据,存入数据库。而这些数据会经过sql查询,统计返回展示到前端。但时间积累后现在数据达到了百万级数据&#xff0c…

Qt使用workflow

Qt工程设置 QMAKE_CFLAGS_DEBUG -MTd QMAKE_CXXFLAGS_DEBUG -MTd上述内容必须设置,否则会报错:error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug。 libworkflow.pri的文件内容如下: …

算法第十五期——动态规划(DP)之各种背包问题

目录 0、背包问题分类 1、 0/1背包简化版 【代码】 2、0/ 1背包的方案数 【思路】 【做法】 【代码】 空间优化1:交替滚动 空间优化2:自我滚动 3、完全背包 【思路】 【代码】 4、分组背包 核心代码 5、多重背包 多重背包解题思路1:转化…

MySQL8 创建用户,设置修改密码,授权

MySQL8 创建用户,设置修改密码,授权 MySQL5.7可以 (创建用户,设置密码,授权) 一步到位 👇 GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION👆这样的语句在MySQL8.0中行不通, 必须 创设和授权 分步执行👇 CR…

如何动态生成列字段?请看向这里哟

🍃 场景前言 🐠一般而言,某个简单查询接口涉及到得表结构不超过三个。如果不是单表操作的话,多个表中间用到联合查询的SQL也可以解决相关问题。但是,事与愿违的是我们的业务是跟着场景走的,并不是所有的业务…

python+django宠物销售商城网站vue

宠物销售商城,在宠物销售商城可以查看首页、商品信息、商品资讯、个人中心、后台管理、购物车、在线客服等内容 用户登录、用户注册,通过注册获取用户名、密码、姓名、联系电话等信息进行注册、登录 商品信息,在商品信息页面可以查看商品名称、商品分类、图片、品牌、规格、价…

java易错题锦集二

源码 补码 int i 5; int j 10; System.out.println(i ~j);有个公式,-n~n1 另一种解题思路 ~代表对n按位取反 10的源码是: 00000000 00000000 00000000 1010 所以对10按位取反就是 11111111 11111111 11111111 0101 由于计算机中-1表示为 11111111 11111111 111…

[docker]笔记-镜像 管理

1、镜像管理 docker search xxxx ①查找镜像,例如查找httpd [rootlocalhost ~]# docker search httpd ②下载镜像 docker pull xxxx [rootlocalhost ~]# docker pull httpd ③列出本地镜像 docker images [rootlocalhost ~]# docker images ④删除镜像 docker rmi xxx…

Linux(十)线程安全 上

目录 一、概念 二、互斥锁实现互斥 三、条件变量实现同步 银行家算法 生产者与消费者模型 一、概念 概念:在多线程程序中,如果涉及到了对共享资源的操作,则有可能会导致数据二义性,而线程安全就指的是,就算对共享…

【MFC】菜单与状态栏(15)

菜单 一般菜单的使用步骤: 1.编辑菜单资源,设置菜单属性(包括菜单名和ID); 2.用ClassWizard自动映射菜单消息和成员函数; 3.手工编辑成员函数,加入菜单消息处理代码。 单文档窗口可以设置默…

2年时间,涨薪20k,想拿高薪还真不能老老实实的工作...

2016年开始了我的测试生活。 2016年刚到公司的时候,我做的是测试工程师。做测试工程师是我对自己的职业规划。说实话,我能得到这份工作真的很高兴。 来公司的第一个星期,因为有一个项目缺人,所以部门经理提前结束了我的考核期&a…

C语言预处理

文章目录 目录 文章目录 前言 一、程序编译的过程 二、编译阶段 1.预处理(*.i) 2.编译(*.s) 3.汇编(*.o) 4.链接 总结 前言 提示:使用vs code(gcc编译器)与vs2022来演示c语言的预处理 提示:以下是本篇文章正文内容,下面…

KEIL编译报错,解决方法汇总

目录 背景 最近在跟着野火码uCosiii的代码时,感觉非常完美,结果一编译,报了120个莫名其妙的问题,下面是踩过的坑,一起记录下,免得下次又掉进去了~ 1. 编译汇编文件,报错 error: unexpected t…

看海泰方圆类ChatGPT技术模型!

ChatGPT,上线2个月便以破亿的用户群引爆了全网。 ChatGPT是由OpenAI公司开发的AI聊天机器人程序,于2022年11月底推出,能够通过学习和理解人类的语言来进行对话、互动,甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务&…