天天看点

为什么使用Binder而不是其他IPC机制

使用Binder而不是其他(Semaphores , Message Queue, PIPES)作为IPC通信机制的理由:

没有一种进程通信机制有Android需要的定位service(service location)的能力。在UNIX有PRC portmapper,而Android也需要相似的功能。(Android中的ServiceManager可以用来方便地注册/查找service)

有大量需要序列化的场景--比如intent、或其他message。Binder提供parcel抽象,它可以使用Parcel.java对数据进行封装。

SysV 有一些严重的问题,比如说竞态条件、缺少权限控制。

Message queues和管道不能传递description。UNIX Domain socket可以,但是不被使用(理由同1)

Binder真的很轻量,并且自带权限机制。它也有一些非常漂亮的特点,比如唤醒recipient process,以及共享内存,这是其他机制所没有的。

Binder从Palm开始就被使用了。以前的Palmer去了Android,然后同时将他们的代码带了进去。

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/4467050.html如需转载请自行联系原作者

kissazi2

继续阅读