Binder是Android中的一种跨进程通信方式。从Android Framework 角度来说Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等等)和相应ManagerService的桥梁;从Android应用层来说Binder是客服端与服务端进行通信的媒介。下面 对 Binder 面试知识基本面试知识的做个小结,方便后期知识的回顾、补充。
推荐博文:
简单明了,彻底地理解Binder
Android进程间通信(IPC)机制Binder简要介绍和学习计划

1、 Linux 内核基础知识

  • 进程隔离/虚拟地址空间:
    进程间是相互独立的,数据不能共享,互不干扰,不同的进程分配在不同的虚拟地址空间中。

  • 系统调用:
    对内核保护,只对应用程序开放许可的资源;允许应用程序通过系统调用调用内核的部分开放程序。

  • binder驱动:负责各个应用进程间,通过binder通信内核来进行交互的模块。

3、为什么使用Binder

  • 性能:相比传统的Socket更高效。
  • 安全:安全性高,支持通信双方进行身份验证。

4、Binder通信模型

Android Binder 面试知识小结_第1张图片

1、注册建立ServiceManager表。
2、Service1、Service2通过Binder驱动申请注册到ServiceManager中。
3、Client需要与Service2进行通信,跨进程无法直接通信,需要先通过ServiceManger中查询到Service2。借助Binder驱动返回一个Service2的代理对象。Client直接跟Service2代理对象进行操作,通过Binder驱动映射操作Service2真实对象,从而完成通信。

5、Binder跨进程通信

Android Binder 面试知识小结_第2张图片

  • Service向SM查找表中注册了Object对象的add()方法;
  • Client想调用Service中Object对象的add()方法,需要通过Binder驱动向SM查找表中查询是否有Object对象的add()方法,有则返回Client一个Object对象的代理对象Proxy ;
  • Client 调用代理对象Proxy的add()方法,Binder驱动进行接收处理去调用真实对象Object的add()方法;
  • Object的add()方法执行后返回结果给SM,SM通过Binder驱动将结果返回给Client。
小结:

客户端进程只是持有了服务端进程的一个代理,通过代理对象协助驱动完成跨进程通信。

6、什么是Binder?

  • Binder是一种通信机制;
  • 对于Service来说Binder指的是Binder本地对象,对于Client来说Binder指的是Binder的代理对象;
  • 对于传输过程而言,Binder是可以跨进程传递的对象。

7、AIDL

Android:学习AIDL,这一篇文章就够了(上)

  • 支持的数据传递类型:
    基本数据类型(short 除外)、String、charSequehce、List(元素得序列化)、Map(元素得序列化)、parcelable。

  • 应用场景:
    AIDL: IPC、多个应用程序、多线程;
    Binder: IPC、多个应用程序、没有多线程;
    Messager: IPC、没有多线程;

  • 通信过程:

    • 客户端通过aidl文件生成的java类 中的Stub.asInterface()方法,得到Proxy代理类
    • 通过调用Proxy代理类的方法,将参数进行打包后,调用IBinder 的transact()方法,交给底层处理,再回调onTransact()方法,将参数进行解包,调用服务端对应的方法,并将执行结果返回。

更多相关文章

  1. Android Volley.jar包下载(第三方开源网络通信框架)
  2. android在一个app程序中,打开另一个app的方法
  3. 小米5手机Android运行程序闪退出错解决方法
  4. Android 查看SHA1值的方法
  5. 如何正确实现Android启动屏画面的方法(避免白屏)
  6. Android中Failed to 。。。。。。timeout错误的解决方法
  7. 对android应用一些破解的方法

随机推荐

  1. Android(安卓)APK反编译得到Java源代码和
  2. Opera Mobile 在 Android(安卓)x86 上運
  3. Android(安卓)中电源状态切换
  4. Android占据80%的市场份额
  5. Android中TextView与EditText控件实现禁
  6. Android(安卓)Framework启动流程浅析
  7. Android的adb命令介绍
  8. Android(安卓)SDK 4.2 正式版发布
  9. android定位并获取城市
  10. Android建筑图像过滤器,如Instagram(1)