Binder 工作在Linux层面,属于一个驱动,只不过这个驱动不需要硬件,或者说这个驱动操作的硬件是内存中的一小段。
Binder可以看成是一个cs架构,这种架构提供了服务端接口,binder驱动,客户端接口三个模块。
首先来看服务端,一个Binder类的服务端其实就是个Binder对象,这个binder对象在创建的时候就会开启一个隐藏线程,该线程接下来会接收binder驱动发来的消息,收到消息后会执行onTransact()方法,并按照该函数参数执行不同的服务代码。因此要实现binder服务,就必须得重载ontranact函数。
下面再看binder驱动,任意一个服务端binder对象被创建时,同时会在Binder驱动中创建一个mRemote对象,该对象的类型也是Binder类。客户端要访问远程服务时,都是通过mRemote对象。