Android系统中,涉及到多进程间的通信底层都是依赖于Binder
IPC机制。Binder,英文意思是别针、回形针的意思,我们经常用回形针将两张纸别在一起,而在Android中,Binder用于将Client端与Service端别在一起。即把多个进程别在一起。比如:普通应用可以通过访问MusicService,而实现音乐的播放、暂停、停止功能。
Binder工作在Linux层面,属于一个驱动,只是这个驱动没有硬件支持,或者说其操作的硬件是基于一小段内存。从线程的角度讲,Binder驱动运行在内核态,客户端调用Binder是通过系统调用来实现的。
<>1.Why need and used Binder?
Linux存在很多其他的IPC方式,如管道、信号量、共享内存、Socket等。那么Android为什么不使用这些原有的技术,而是要使开发一种新的叫Binder的进程间通信机制呢?
主要基于两方面原因:
<>1.1 安全方面
传统的进程通信方式对于通信双方的身份并没有做出严格的验证,比如Socket通信ip地址是客户端手动填入,很容易进行伪造,而Binder机制从协议本身就支持对通信双方做身份校检,因而大大提升了安全性。
<>1.2 性能方面
在移动设备上(性能受限制的设备,比如要省电),广泛地使用跨进程通信对通信机制的性能有严格的要求,Binder相对出传统的Socket方式,更加高效。Binder数据拷贝只需要一次,而管道、消息队列、Socke