Android Binder
Android 作为多进程操作系统,每个功能模块都是一个独立的进程,特别是 hal 层将底层硬件隔离开,进程通信会频繁的发生,为了更好的在进程间通信,Android 开发了 Binder 模块专门用于解决该问题。
前置知识介绍
进程执行过程
Linux 下进程通信方式
Binder 概述
Android Binder 是采用 C/S 框架,一个 ServiceManager 作为服务的管理者,保存所有注册的服务进程,需要调用服务的客户进程在使用时前来查询对应的服务接口并完成调用。其中注册,查询,调用其他进程的服务都是通过 Bidner 驱动支持完成。
所以 Android Binder 分为 4 大模块
- ServiceManager 管理服务
- Server 注册服务进程提供的服务接口
- Client 端的查询并调用 Server 提供的服务
- Binder 驱动模块以内核形式对进程间通信提供支持
Binder 案例讲解
- ServiceManager 启动在内核中注册为第一个服务进程
- hal 层服务进程注册到 ServiceManager
- frameworks 层作为客户端查询并使用 hal 层服务进程