Binder通信机制简介
Binder是Android系统中大量使用的IPC(Inter-process communication,进程间通讯)机制。无论是应用程序对系统服务的请求,还是应用程序自身提供对外服务,都需要使用到Binder。
使用Binder机制的原因:
-
Binder本身是C/S架构的,这一点更符合Android系统的架构
-
Binder相比于传统的socket、管道通信更高效,在IPC时,Binder只需要数据拷贝1次,而传统的socket之类的需要2次
-
Binder支持通信双方进行身份校验,保障了安全性,而传统的进程间通信对于通信双方的身份没有进行严格的验证
Binder通信机制:
Server Manager在其内部维护一张表
① 服务端进程向Server Manager注册信息
② 客户端进程向Server Manager取得信息
③ 客户端进程根据得到的信息与服务端进程建立进程间通信的通路,然后就可以“直接”与服务端进程进行交互
PS:client、server、service manager三者之间没有直接的信息交互,它们都通过Binder驱动进行间接交互达到client与server交互的目的