Android Binder 学习

Android Binder

Android 作为多进程操作系统,每个功能模块都是一个独立的进程,特别是 hal 层将底层硬件隔离开,进程通信会频繁的发生,为了更好的在进程间通信,Android 开发了 Binder 模块专门用于解决该问题。

前置知识介绍

进程执行过程

Linux 下进程通信方式

Binder 概述

Android Binder 是采用 C/S 框架,一个 ServiceManager 作为服务的管理者,保存所有注册的服务进程,需要调用服务的客户进程在使用时前来查询对应的服务接口并完成调用。其中注册,查询,调用其他进程的服务都是通过 Bidner 驱动支持完成。

所以 Android Binder 分为 4 大模块

  1. ServiceManager 管理服务
  2. Server 注册服务进程提供的服务接口
  3. Client 端的查询并调用 Server 提供的服务
  4. Binder 驱动模块以内核形式对进程间通信提供支持

Binder 案例讲解

  1. ServiceManager 启动在内核中注册为第一个服务进程
  2. hal 层服务进程注册到 ServiceManager
  3. frameworks 层作为客户端查询并使用 hal 层服务进程

ServiceManager 启动

源码分析

servicemanager 启动过程

流程图

架构图

Hal 层服务进程注册

源码分析

hal 层服务注册过程

流程图

架构图

Frameworks 层查询并调用

源码分析

流程图

架构图

架构图

补充

posted @ 2024-06-14 13:42  王清河  阅读(29)  评论(0编辑  收藏  举报