Android Binder

  1. Binder用于完成进程间通信,它是一种工作在Linux层面的架构,这种架构提供了服务端接口,Binder驱动,客户端接口三个模块
    • 服务端,一个Binder服务端实际上就是一个Binder对象,该对象一旦创建就会启动一个线程,用于接收Binder驱动发送的消息,收到消息后会执行到Binder对象的onTransact()函数,并按照该函数的参数执行不同的服务代码,要实现一个Binder服务,必须重载onTransact()方法
    • Binder驱动:任何一个Binder对象被创建时,同时会在Binder驱动中创建一个mRemote对象,该对象类型也是Binder,客户端要访问远程服务时都是通过mRemote对象
    • 客户端:客户端要访问远程服务,必须获得mRemote引用,然后调用其transact()方法,Android提供了Service用于返回Binder

  2. ServiceManager:一个独立的进程,管理各种系统服务,其本身也是一个Service. ServiceManager所管理的所有Service都是以响应的Manager返回给客户端,客户端一般不能直接通过Binder引用去访问具体服务,而是经过一个Manager,响应的Manager类对客户端是可见的,而远程服务类对客户端则是隐藏的,这些Manager类中都会有一个远程服务Binder的变量

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。