Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android-Binder机制

Android-Binder机制

作者头像
用户7557625
发布于 2020-07-15 02:55:52
发布于 2020-07-15 02:55:52
1.4K0
举报

Binder机制是什么:

Binder机制是​ Android系统中进程间通讯(IPC)的一种方式,Android中ContentProvider、Intent、aidl都是基于Binder。

为什么要用Binder机制:

在提及Binder之前,我们先看看我们平时开发的app的状况。每个app就像孤岛一样,生活在系统分配给自己的虚拟机和内存空间,好处是安全,各个app不会互相影响到对方,IE一个网页的崩溃却会导致整个IE应用程序死亡(举个小栗子,IE不属于跨进程)。在这种情况下,必须有一种机制,提供安全高效的通信的功能,Binder就为此而生。所以,Binder是Android系统的一种IPC(进程间通信)方式。ActivityManagerService、WinderManagerService等系统服务的背后都是Binder。

Binder机制的好处:

进程通信大概就两个方面因素,一者性能方面,传输效率问题,传统的管道队列模式采用内存缓冲区的方式,数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程,而socket都知道传输效率低,开销大,用于跨网络进程交互比较多,共享内存虽然无需拷贝,但是不安全。 总结一下就是: Binder机制优点: 1、只需要进行一次数据拷贝,性能上仅次于共享内存 2、基于C/S架构,职责明确,架构清晰,稳定性较好 3、为每个App分配UID,UID是鉴别进程身份的标志,安全性较好

二者这是安全问题,Android作为一个开放式,拥有众多开发者的的平台,应用程序的来源广泛,确保终端安全是非常重要的,传统的IPC通信方式没有任何措施,基本依靠上层协议,其一无法确认对方可靠的身份,Android为每个安装好的应用程序分配了自己的UID,故进程的UID是鉴别进程身份的重要标志,传统的IPC要发送类似的UID也只能放在数据包里,但也容易被拦截,恶意进攻,socket则需要暴露自己的ip和端口,知道这些恶意程序则可以进行任意接入。 综上所述,Android需要一种高效率,安全性高的进程通信方式,也就是Binder,Binder只需要一次拷贝,性能仅次于共享内存,而且采用的传统的C/S结构,稳定性也是没得说,发送添加UID/PID,安全性高。

Binder机制的实现:

1、Binder机制的架构 通信采用C/S架构,包含Client、 Server、 ServiceManager 以及 Binder 驱动 在 framework 层进行了封装,通过 JNI 技术调用 Native(C/C++)层的 Binder 架构 在 Native 层以 ioctl 的方式与 Binder 驱动通讯

2、Binder机制的实现 android中提供了Binder实体类,Binder 实体是 Server进程 在 Binder 驱动中的存在形式。 该对象保存 Server 和 ServiceManager 的信息(保存在内核空间中),Binder 驱动通过 内核空间的Binder 实体 找到用户空间的Server对象,注册服务后,Binder驱动持有 Server进程创建的Binder实体。 流程总结:客户端通过bindService,通过Binder驱动查询ServiceManager是否已经注册该服务, 如果没有注册,Service进程会想Binder驱动发起服务注册请求,一旦注册,调用该服务的onBind返回一个Binder对象到Binder驱动,已经注册则意味着Binder驱动内包含这个Binder对象,Binder驱动返回一个BinderProxy对象,并通过回调,传递给客户端,客户端通过这个BinderProxy(在java层仍然是Binder对象)操作Binder驱动内的Binder对象(transact方法),Binder驱动含有很多的Binder对象,它们是通过InterfaceToken区分不同服务的。

Binder通信的四个角色

Client进程:使用服务的进程。

Server进程:提供服务的进程。

ServiceManager进程:ServiceManager的作用是将字符形式的Binder名字转化成Client中对该Binder的引用,使得Client能够通过Binder名字获得对Server中Binder实体的引用。

Binder驱动:驱动负责进程之间Binder通信的建立,Binder在进程之间的传递,Binder引用计数管理,数据包在进程之间的传递和交互等一系列底层支持。

Binder运行机制

图中Client/Server/ServiceManage之间的相互通信都是基于Binder机制。既然基于Binder机制通信,那么同样也是C/S架构,则图中的3大步骤都有相应的Client端与Server端。

注册服务(addService):Server进程要先注册Service到ServiceManager。该过程:Server是客户端,ServiceManager是服务端。

获取服务(getService):Client进程使用某个Service前,须先向ServiceManager中获取相应的Service。该过程:Client是客户端,ServiceManager是服务端。

使用服务:Client根据得到的Service信息建立与Service所在的Server进程通信的通路,然后就可以直接与Service交互。该过程:client是客户端,server是服务端。

图中的Client,Server,Service Manager之间交互都是虚线表示,是由于它们彼此之间不是直接交互的,而是都通过与Binder驱动进行交互的,从而实现IPC通信方式。其中Binder驱动位于内核空间,Client,Server,Service Manager位于用户空间。Binder驱动和Service Manager可以看做是Android平台的基础架构,而Client和Server是Android的应用层,开发人员只需自定义实现client、Server端,借助Android的基本平台架构便可以直接进行IPC通信。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TTS它又又又来了!17.8k Star!OpenVoice V2只需一小段参考音频即可实现高效的声音克隆!
引用下我之前写的TTS文章中的话,2023年被大家称为人工智能元年,而在2024年的当下人工智能技术已然在各行各业都展露头角。各种AI工具也层出不穷,其中 语音克隆技术 也是尤为引人瞩目的产品之一。
Python兴趣圈
2024/04/26
2.1K0
TTS它又又又来了!17.8k Star!OpenVoice V2只需一小段参考音频即可实现高效的声音克隆!
一款可定制声音的开源音频克隆工具—OpenVoice
正如我们在我们的 论文[3] 和 网站[4]中详细介绍的,OpenVoice的优势有三个方面:
山行AI
2024/01/05
5.4K2
一款可定制声音的开源音频克隆工具—OpenVoice
6k Star!ChatTTS:开源领域最强的文本到语音转换(TTS)模型!
体验地址:https://huggingface.co/2Noise/ChatTTS
AI进修生
2024/12/02
7120
6k Star!ChatTTS:开源领域最强的文本到语音转换(TTS)模型!
【AI落地应用实战】文本生成语音Parler-TTS + DAMODEL复现指南
这里我要推荐的【好事】文章是如何从零构建一个现代深度学习框架,2024年可以说是大模型发展迅速的一年,国内的国际的各大厂商都推出了多种场景的大模型,那么作为小白,虽然不是大模型从业者,但是也想了解一下大模型这样的深度学习框架到底是怎么来的,是如何构建的呢?可以看这篇文章:
中杯可乐多加冰
2024/11/12
6310
VALL-E vs. Spark-TTS:两代零样本 TTS 模型横评
零样本文本转语音(Zero-Shot TTS)技术近年出现突破。微软于 2023 年发布的 VALL-E 模型仅需 3 秒语音示例便可克隆说话人声音,刷新业界对数据门槛的认知。随后开源的 Spark-TTS 进一步在更小模型上实现了近似甚至更优的效果(Ai Voice Cloning-以3秒音频就可克隆著称的网站就是宣称在此模型基础上自研),并原生支持多语言与细粒度可控。作为一名语音 AI 开发者,我将从架构原理、音质保真、推理效率、训练成本与实现复杂度五个维度,客观比较这两代代表性模型,探讨它们在语音克隆发展中的阶段性定位。
用户11657403
2025/05/14
3310
突破性语音合成技术!Spark-TTS:用大模型打造你的专属AI语音助手
你是否想过,未来的语音助手不仅能“说话”,还能根据你的需求调整音色、语速甚至情绪?近日,一项名为Spark-TTS的突破性技术横空出世,它基于大语言模型(LLM),将文本转语音(TTS)技术推向了全新高度!今天,我们就来揭秘这项“会思考的语音合成黑科技”。
AI浩
2025/03/17
2.6K0
突破性语音合成技术!Spark-TTS:用大模型打造你的专属AI语音助手
【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板
我很愿意推荐一些小而美、高实用模型,比如之前写的YOLOv10霸榜百度词条,很多人搜索,仅需100M就可以完成毫秒级图像识别与目标检测,相关的专栏也是CSDN付费专栏中排行最靠前的。今天介绍有一个小而美、高实用性的模型:ChatTTS。
LDG_AGI
2024/08/13
1.5K0
【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板
Spark-TTS: AI语音合成的"变声大师"
嘿,各位AI爱好者!还记得那些机器人般毫无感情的合成语音吗?或者那些只能完全模仿但无法创造的语音克隆?今天我要介绍的Spark-TTS模型,可能会让这些问题成为历史。想象一下,你可以让AI不仅说出任何文字,还能控制它是用男声还是女声,高音还是低音,快速还是缓慢...听起来很酷,对吧?那就跟我一起来看看这个语音合成界的"变声大师"吧!
martinzh7
2025/06/02
3790
Spark-TTS: AI语音合成的"变声大师"
安利免费开源的声音克隆、文本转语音整合包软件、一键本地安装!
大家好,我是星哥,今天给大家介绍两款声音克隆、文本转语音的软件,一个是ChatTTS和Spark-TTS,并且都有一键安装包,让你无需复杂的配置,就能在本地轻松体验声音的魅力。
星哥玩云
2025/04/02
1.5K0
安利免费开源的声音克隆、文本转语音整合包软件、一键本地安装!
秒杀同行!Kimi开源全新音频基础模型,横扫十多项基准测试,总体性能第一
今天,kimi 又发布了新的开源项目 —— 一个全新的通用音频基础模型 Kimi-Audio,支持语音识别、音频理解、音频转文本、语音对话等多种任务,在十多个音频基准测试中实现了最先进的 (SOTA) 性能。
机器之心
2025/04/27
4750
秒杀同行!Kimi开源全新音频基础模型,横扫十多项基准测试,总体性能第一
Fish Agent :最新开源AI实时语音对话代理!音色克隆,模仿情感,声音自然
以前写过一个叫 Fish Speech 的TTS项目,效果还不错,也是第一梯队的TTS模型。
AI进修生
2024/12/02
7860
Fish Agent :最新开源AI实时语音对话代理!音色克隆,模仿情感,声音自然
250美元起售,还开源,Hugging Face 发布史上最亲民人形机器人
伊隆・马斯克曾预测称到 2040 年,全球将有 100 亿台人形机器人在工作,而现在,随着 Hugging Face 正式开源发布两款新的人形机器人,让我们离这一预言成真又近了一步。
机器之心
2025/06/10
2180
250美元起售,还开源,Hugging Face 发布史上最亲民人形机器人
F5-TTS :具备零样本生成能力的TTS工具!支持多语言切换、速度控制、情感表达!
随着技术的发展,文本转语音(TTS)系统的应用越来越广泛。无论是在智能助手、内容创作,还是语言学习领域,TTS 技术都扮演着重要角色。
Python兴趣圈
2024/10/15
8.1K0
F5-TTS :具备零样本生成能力的TTS工具!支持多语言切换、速度控制、情感表达!
分享一款可用于对话场景的文本转语音免费工具
不知道大家在日常的学习、工作中是否有这样的一个情况,当我们阅读完一篇文章,很快就能读完,但印象不会很深;或者说在很多时候,对着电脑、手机看久了,眼睛很疲劳,希望能够通过听觉来接收我们文章的内容。我自己在时常阅读公众号文章,就很喜欢去听,而不是阅读的方式。逐渐发现听内容比阅读内容更容易吸收,而且能够极大的缓解我们的眼睛疲劳。
兔云小新LM
2024/06/10
5410
分享一款可用于对话场景的文本转语音免费工具
外公去世十年后,我用 AI “复活”了他
大数据文摘授权转载自果壳 作者:俞佳霖 编辑:biu 绘图:陈淇 我用了外公生前的文字记录和影音资料,再整合几个成熟的 AI 技术,就让他“复活”了。 那天,我突发奇想,在搜索引擎查找“用 AI 复活逝者”,看到了 Joshua“复活”他未婚妻 Jessica 的故事。 2012 年,Jessica 在等待肝脏移植过程中病情恶化,抢救无效死亡。而那时 Joshua 恰巧在外,错过了死别,他因此自责了八年。直到 2020 年,他看到了“Project December”,这个网站提示只要填写“语句样例”和“人
大数据文摘
2022/04/11
4960
外公去世十年后,我用 AI “复活”了他
ChatTTS的爆火是必然,它正在重新定义我们与机器对话的方式
当AI技术与语音合成相遇,开源技术众多,为什么 ChatTTS 能够一夜爆火?你有听说过能说情感真切文字的 AI 吗?
Python兴趣圈
2024/06/17
8470
ChatTTS的爆火是必然,它正在重新定义我们与机器对话的方式
AI:语音克隆MockingBird简介及实践(秒级生成你想要的语音内容)
随着人工智能技术的不断发展,语音克隆技术也得到了越来越多的关注和研究。目前,AI语音克隆技术已经可以实现让机器模拟出一个人的声音,甚至可以让机器模拟出一个人的语言习惯和表情。
Freedom123
2024/03/29
1.1K0
AI:语音克隆MockingBird简介及实践(秒级生成你想要的语音内容)
【AGI-Eval行业动态】OpenAI 语音模型三连发,AI 语音进入“声优”时代
美东时间 3 月 20 日,OpenAI 发布了三款全新语音模型,分别是自动语音识别模型(ASR) GPT - 4o Transcribe 和 GPT - 4o Mini Transcribe,以及语音合成模型(TTS) GPT - 4o Mini TTS。
AGI-Eval评测社区
2025/04/08
3740
【AGI-Eval行业动态】OpenAI 语音模型三连发,AI 语音进入“声优”时代
微软NaturalSpeech语音合成推出第三代,网友惊呼:超自然!实至名归
文本到语音合成(Text to Speech,TTS)作为生成式人工智能(Generative AI 或 AIGC)的重要课题,在近年来取得了飞速发展。在大模型(LLM)时代下,语音合成技术能够扩展大模型的语音交互能力,更是受到了广泛的关注。
机器之心
2024/03/26
1.2K0
微软NaturalSpeech语音合成推出第三代,网友惊呼:超自然!实至名归
从声纹模型到语音合成:音频处理 AI 技术前沿 | 开源专题 No.45
AudioCraft 是一个用于音频生成的 PyTorch 库。它包含了两个最先进的 AI 生成模型 (AudioGen 和 MusicGen) 的推理和训练代码,可以产生高质量音频。该项目还提供了其他功能:
小柒
2023/12/20
7530
从声纹模型到语音合成:音频处理 AI 技术前沿 | 开源专题 No.45
推荐阅读
TTS它又又又来了!17.8k Star!OpenVoice V2只需一小段参考音频即可实现高效的声音克隆!
2.1K0
一款可定制声音的开源音频克隆工具—OpenVoice
5.4K2
6k Star!ChatTTS:开源领域最强的文本到语音转换(TTS)模型!
7120
【AI落地应用实战】文本生成语音Parler-TTS + DAMODEL复现指南
6310
VALL-E vs. Spark-TTS:两代零样本 TTS 模型横评
3310
突破性语音合成技术!Spark-TTS:用大模型打造你的专属AI语音助手
2.6K0
【机器学习】ChatTTS:开源文本转语音(text-to-speech)大模型天花板
1.5K0
Spark-TTS: AI语音合成的"变声大师"
3790
安利免费开源的声音克隆、文本转语音整合包软件、一键本地安装!
1.5K0
秒杀同行!Kimi开源全新音频基础模型,横扫十多项基准测试,总体性能第一
4750
Fish Agent :最新开源AI实时语音对话代理!音色克隆,模仿情感,声音自然
7860
250美元起售,还开源,Hugging Face 发布史上最亲民人形机器人
2180
F5-TTS :具备零样本生成能力的TTS工具!支持多语言切换、速度控制、情感表达!
8.1K0
分享一款可用于对话场景的文本转语音免费工具
5410
外公去世十年后,我用 AI “复活”了他
4960
ChatTTS的爆火是必然,它正在重新定义我们与机器对话的方式
8470
AI:语音克隆MockingBird简介及实践(秒级生成你想要的语音内容)
1.1K0
【AGI-Eval行业动态】OpenAI 语音模型三连发,AI 语音进入“声优”时代
3740
微软NaturalSpeech语音合成推出第三代,网友惊呼:超自然!实至名归
1.2K0
从声纹模型到语音合成:音频处理 AI 技术前沿 | 开源专题 No.45
7530
相关推荐
TTS它又又又来了!17.8k Star!OpenVoice V2只需一小段参考音频即可实现高效的声音克隆!
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档