前言

Android系统是基于Linux系统的,理论上应该使用Linux内置的IPC方式。Linux中的IPC方式有管道、信号量、共享内存、消息队列、Socket,Android使用的Binder机制不属于Linux。Android不继承Linux中原有的IPC方式,而选择使用Binder,说明Binder具有一定的优势。

什么是Binder

  • Android系统进程间通信(IPC---Inter-Process Communication-进程间通信)方式之一
  • Linux的驱动/dev/binder (是一个binder文件)
  • 是安卓系统系统中的Binder类,实现了IBinder接口
  • 从Android Framework角度来说,Binder是ServiceManager连接各种Manager和相应ManagerService的桥梁;

Binder机制具体有两层含义:

  • Binder是一种跨进程通信(IPC,Inter-Process Communication)的手段;
  • Binder是一种远程过程调用(RPC,Remote Procedure Call)的手段。

使用Binder的原因

  • 性能方面:
    1.socket: 作为一款通用接口,其传输效率低,开销大,主要用在跨网路的进程间通信和本机上进程间的低速通信。
    2.消息队列和管道:采取存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝的过程。
    3.共享内存:虽然无需拷贝,但控制复杂,难以使用。
    4.Binder:只需要一次数据拷贝,性能上仅次于共享内存。

-稳定性方面

  • Binder基于C/S架构,客户端(Client)有什么需求就丢给服务端(Service)去完成,架构清晰,职责明确又相互独立,自然稳定性好。
  • 共享内存:虽然无需拷贝,但是控制复杂,难以使用。
  • 从稳定的角度讲,Binder机制是优于内存共享的。

-安全方面

  • 传统的IPC没有任何安全措施,完全依赖上层协议来确保。
  • 传统的IPC接收方无法获得对方可靠的进程用户ID/进程ID(UID/PID),从而无法鉴别对方身份。

更多相关文章

  1. SurfaceView闪烁问题的根源-双缓存机制
  2. 金山手机毒霸工作原理
  3. 阿里云面试(android)
  4. Android(安卓)WebView使用经验总结
  5. Android(安卓)面试题集 包含答案
  6. 【转载】Android(安卓)Bander设计与实现 - 设计篇
  7. Android(安卓)adb常见问题整理
  8. android 用LruCache读取大图片并缓存
  9. Binder学习笔记(十二)—— binder_transaction(...)都干了什么?

随机推荐

  1. [Android]你不知道的Android进程化(1)--
  2. 你如何评价Android系统?优缺点
  3. 谷歌要求马上升级!Android迎来安全更新:修
  4. 走进Android(安卓)4.2背后强大的安全系统
  5. android 常用命令集锦 新手必知必会哦---
  6. 利用Android与iOS系统进行移动应用开发:浅
  7. 如何快速学习Android开发,必知知识点集锦!(
  8. 静心。。。静心。。。
  9. Android(安卓)仿微信, QQ 裁剪
  10. 我的2011-移动开发的梦想