概念
Binder 是Android操作系统中用于进程间通信的一种机制
为什么使用Binder
- Binder性能优势,仅需要一次拷贝,性能好于除
共享内存
外的IPC方式 - 稳定性,C/S架构,架构清晰,调用双方职责明确
- 安全性,Binder和Android深度绑定,可以做到更细粒度的权限控制,比如服务调用方权限检查,限制未声明权限的客户端访问敏感信息,UID和PID校验系统服务的访问权限等。
使用场景
Binder作为一种进程间通信(IPC)机制,具体场景为服务的实现和服务的调用为不同进程,原因是多方面的,我们可以从系统角度和应用角度来看。
- 系统服务的获取,比如位置信息的获取,需要使用位置服务,通过Binder实现
- Service和Activity通信,推送服务,后台音乐播放,需要UI主进程和后台进程独立
- 跨应用程序通信,例如天气通讯录应用允许其他程序访问应用产生的数据或写入数据
重要的概念
- Binder驱动: 负责管理Binder服务和客户端之间通信,位于Linux内核中
- 数据格式:基础数据结构和实现了Parcelable的复杂数据结构
- 代理(Proxy)代理客户端将方法调用转发到服务端
- 存根(Stub)负责接收调用并执行相应的操作
个人理解
Binder机制是 Linux 共享内存的优化,受限于移动设备的特点,例如,设备性能较差,系统服务和跨进程调用频次更高。且对安全性要求细粒度可控,硬件资源紧张等特点。将自由分配
的模式,改为集中管理
类比现实来看, 我们可以将Android系统想象成一个小区
,每个App想象成业主
, Binder驱动 想象成居委会
,业主(App)是运行在沙盒当中无法出去,这是就需要业务员
代理。
居委会有一份服务电话表
和一些备忘录
。
现在模拟一个场景,业主S
是个唱歌主播, 业主C
想要点首《罗刹海市》
Binder流程
Linux共享内存
这是一个非常简化,甚至不太契合的场景,只有一次交互,甚至没有返回值,但有助于我们理解Binder的优势。
总结
Android Binder是一种和Android系统深度绑定的IPC机制,渗透在Android系统从硬件到软件的各个层面。最大程度的可控且适合移动端设备。
原文地址:https://blog.csdn.net/ConcurrentHashMap/article/details/134701960
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_39536.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。