美文网首页
Binder机制

Binder机制

作者: iyifei | 来源:发表于2018-08-10 13:55 被阅读17次

    什么是Binder

    1. 直观来说,Binder是Android中的一个类,它继承了IBinder接口

    2. 从IPC角度来说,Binder是Android中的一种跨进程通信方式,Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder,该通信方式在linux中没有

    3. 从Android Framework角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,etc)和相应ManagerService的桥梁

    4. 从Android应用层来说,Binder是客户端和服务端进行通信的媒介,当你bindService的时候,服务端会返回一个包含了服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这里的服务包括普通服务和基于AIDL的服务

    Binder属于android平台特有的IPC通道,也是进程间数据交互的核心内容。

    安卓平台IPC方式总的来说有5种:
    1、文件操作;
    2、Messenger;
    3、Provider;
    4、AIDL;
    5、Socket。
    这五种方式中,2、3、4的实现都用到了Binder机制。

    Binder设计结构理解

    1、通信进程两端两个重要对象:一个是本地端的Proxy远程引用对象,一个是远程端的Stub实体对象
    2、client端Proxy对象可以根据所定义的继承IInterface接口的相关约定方法来操作server端Stub实体类。
    3、Android中在使用系统服务的时候通过getSystemService方法获取到的其实都是Stub把远端的Binder转化的对象,因为系统服务都是在system_server进程中,所以肯定是跨进程获取对象的,那么这个Binder对象其实就是上面的Proxy对象
    4、除client和Proxy进程外,还存在者一个serverManager所在的进程(0号引用获取),用来存储proxy引用与stub实体的对应关系。
    5、简单理解:ProxyBinder的transact方法调用后会同步(可异步)调用到Stub类的onTransact.这中间进程间数据的一次拷贝都是在系统空间的Binder驱动中完成。

    官方图 模型原理图 应用层角度看-binder机制原理

    参考
    Android进程间通信(IPC)机制Binder简要介绍和学习计划
    Android跨进程通信:图文详解 Binder机制 原理
    Android Binder机制浅析
    Binder机制原理

    相关文章

      网友评论

          本文标题:Binder机制

          本文链接:https://www.haomeiwen.com/subject/kabopftx.html