1.大名鼎鼎的Binder继承类图
Android系统中,承担IXXX角色的业务接口类有很多,例如IServiceManager,IGpuService, IMediaResourceMonitor, IBatteryStats, IAppOpsService, IProducerListener, ISurfaceComposer,IGraphicBufferProducer,ISensorServer, IDisplayEventConnection等等。其中IServiceManager貌似只有Bp端,没有 Bn端,Bn端直接是servicemanager这个进程调用Binder裸驱动实现的服务。
以IBatteryStats为例,它的实现继承类图就是将IXXX替换为自己定义的业务接口类的定义:
这几乎是个万能架构,也可以说是一种设计模式,任何符合C-S模式的的应用场景都可以使用
一次binder会话的时序图:
2.另一种适合小型嵌入式的实现
序列化和反序列化操作。