Binder进程间通信机制的Client进程和Server进程的一次进程间通信过程可以分为6个步骤。
1. Client进程想Binder驱动程序发送一个BC_TRANSACTION命令协议。
2. Binder驱动程序根据协议内容找到Server进程之后,向Client进程发送BR_TRANSACTION_COMPLETE返回协议,表示进程间通信请求已经被接受。Client进程接受到Binder驱动程序发送的BR_TRANSACTION_COMPLETE返回协议并处理完成后会再次进入到Binder驱动程序中去等待目标Server进程返回的进程间通信结果。
3. Binder驱动程序向Client进程发送BR_TRANSACTION_COMPLETE返回协议的同时向目标进程Server进程发送BR_TRANSCTION返回协议,请求目标进程处理该进程间通信请求。
4. Server进程接收到Binder驱动程序发来的BR_TRANSACTION返回协议并处理之后,就会向Binder驱动程序发送BC_REPLY命令协议。
5.Binder驱动程序根据协议内容找到目标Client进程之后,想Server进程发送BR_TRANSACTIION_COMPLETE返回协议,表示进程间通信数据结果已经收到。Server进程收到Binder驱动程序发送给它的BR_TRANSACTION_COMPLETE返回协议之后,一次进程间通信请求就结束了,接着会进入到Binder驱动程序中去等待下一次通信请求。
6. Binder驱动程序向Server进程发送BR_TRANSACTION_COMPLETE返回协议的同时,也会向目标进程Client进程发送BR_REPLY返回协议,表示Server进程已经处理完它的通信请求了,并且进程间通信的结果返回给它。