为什么 Android 要采用 Binder 作为 IPC 机制?
这道题想考察什么?
Binder作为IPC机制的优势。
考生应该如何回答
简单来说,Binder 是android系统工程师为android 定制的一个跨进程通信方法,当然它也不是android 系统原创的,是参考了OpenBinder的实现而引进到Google的。Binder是综合了android系统的特点,从性能,设计架构,安全性等几个方面的综合平衡而设计的,具体的关于Binder的实现细节,朋友们可以参考下面的题目 《描述下Binder机制原理》进行系统学习。
应该从几个方面与传统IPC机制做对比。
- 性能方面
- 拷贝数据需要花时间,Binder只需拷贝一次,共享内存无需拷贝,其他的需要拷贝两次。
- 从速度上来说,Binder仅次于共享内存,优于Socket,消息队列,管道,信号,信号量等。
- 特点方面
- Binder:基于C/S 架构,易用性高。
- 共享内存:
- 多个进程共享同一块内存区域,必然需要某种同步机制。
- 使用麻烦,容易出现数据不同步,死锁等问题。
- Socket:
- socket作为一款通用接口,其传输效率低,开销大。
- 主要用在跨网络的进程间通信和本机上进程间的低速通信。
- 安全性方面
- Binder:(安全性高)
- 为每个APP分配不同UID,通过UID鉴别进程身份。
- 即支持实名Binder,又支持匿名Binder。
- 传统IPC:(不安全)
- 完全依赖上层协议,只能由用户在数据包中填入UID/PID。
- 访问接入点是开放的,任何程序都可以与其建立连接。
- Binder:(安全性高)
通过上面几个比较,特别是安全性这块,所以最终Android选择使用Binder机制进行通信。
往期回顾
【Android面试题】Android Framework核心面试题——Android中多进程通信的方式有哪些?
【Android面试题】Android Framework核心面试题——描述下Binder机制原理
【Android面试题】Android Framework核心面试题—— Binder线程池的工作过程是什么样?
【Android面试题】Android Framework核心面试题——Android中Pid&Uid的区别和联系
【Android面试题】Android Framework核心面试题——Handler怎么进行线程通信,原理是什么?
【Android面试题】Android Framework核心面试题——ThreadLocal的原理,以及在Looper是如何应用的?
【Android面试题】Android Framework核心面试题——Looper.loop会不会阻塞主线程?
【Android面试题】Android Framework核心面试题—— Looper、handler、线程间的关系
【Android面试题】Android Framework——IdleHandler是什么?怎么使用,能解决什么问题?
【Android面试题】Android Framework核心面试题——Android 系统启动流程
【Android面试题】Android Framework核心面试题——Zygote进程的启动流程
【Android面试题】Android Framework核心面试题——SystemServer进程的启动流程
【Android面试题】Android Framework核心面试题——AMS启动流程
【Android面试题】Android Framework核心面试题——Android app进程是怎么启动的?
【Android题】Android Framework核心面试题——Intent的原理,作用,可以传递哪些类型的参数?
【Android面试题】Android Framework核心面试题——Activity启动流程分析
【Android Framework面试题】在清单文件中配置的receiver,系统是何时会注册此广播接受者的?
【Android Framework核心面试题】为什么Dialog不能用Application的Context?
【Android Framework核心面试题】 LoginActivity配置的launchMode是何时解析的?
更多面试题可关注公众号:Android老皮
还能解锁 《Android十大板块文档》 ,让学习更贴近未来实战。已形成PDF版
内容如下:
1.Android车载应用开发系统学习指南(附项目实战)
2.Android Framework学习指南,助力成为系统级开发高手
3.2023最新Android中高级面试题汇总+解析,告别零offer
4.企业级Android音视频开发学习路线+项目实战(附源码)
5.Android Jetpack从入门到精通,构建高质量UI界面
6.Flutter技术解析与实战,跨平台首要之选
7.Kotlin从入门到实战,全方面提升架构基础
8.高级Android插件化与组件化(含实战教程和源码)
9.Android 性能优化实战+360°全方面性能调优
10.Android零基础入门到精通,高手进阶之路