Binder线程池

作者: 暴走的Jacky | 来源:发表于2018-04-16 14:33 被阅读0次
binder线程池.png

在服务端Service中,有三个Binder类,那么服务端也就开了3个线程(Binder服务端必须在子线程中监听客户端的请求)。

步骤一:通过IPC获取BinderPool在本地的引用(这是个Proxy对象,系统会帮你创建)。

步骤二:通过该Proxy对象直接和Service端的Binder进行通信

包结构如下:

Binder线程池包结构.png
interface IBinderPool {
    /**
     * 根据code返回对应的Binder对象
     */
   IBinder queryBinder(int code); 
}

客户端首先和Service端的BinderPool对象进行一次IPC通信,客户端拿到自己想要的Binder代理,比如EncryptMoudle,然后通过该代理直接和服务端对应的Binder通信。

这种思想在Android FrameWork层中随处可见,系统提供了各种各样的服务(Service),客户端必须先拿到ServiceManger,再根据ServiceManager来拿到对应的Service,这里的BinderPool也是同样的道理。

  getSystemService(String name)

通过这一行代码,就可以拿到服务端提供的Service。

相关文章

  • binder 驱动分析

    一 binder线程池 hidl service启动时要设置binder的线程池:configureRpcThre...

  • IPC机制(下)

    目录 Binder线程池 选用合适的IPC方式 Binder线程池 当项目业务庞大时,我们需要减少Service的...

  • 16 Binder线程池工作过程

    基于Android 6.0源码剖析,分析Binder线程池以及binder线程启动过程。 一. 概述[http:/...

  • 进程的Binder线程池工作过程

    基于Android 6.0源码剖析,分析Binder线程池以及binder线程启动过程。 一. 概述 Androi...

  • android binder 进程系列 进程的Binder线程池

    基于Android 6.0源码剖析,分析Binder线程池以及binder线程启动过程。 一. 概述 Androi...

  • Binder线程池

    在服务端Service中,有三个Binder类,那么服务端也就开了3个线程(Binder服务端必须在子线程中监听客...

  • Binder线程池

    上一篇水文介绍了IPC的几种方式,几乎都是一对一的方式。本节,再次探讨AIDL的使用,例如多个业务都需要使用AID...

  • SystemServer进程分析

    在进入SystemServer的main函数前,Zygote先会启动Binder线程池,用于与其他进程的通信。 R...

  • Android AIDL中方法调用和回调线程问题探讨

    在Android中咱们暂且把线程分为三种,主线程,子线程,binder线程。binder线程概念较复杂,我们这里不...

  • binder进程

    Binder设计架构中,只有第一个Binder主线程(也就是Binder_1线程)是由应用程序主动创建,Binde...

网友评论

    本文标题:Binder线程池

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