使用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