Binder 是 Android 特有的**跨进程通信(IPC)机制**,核心优势和原理如下:
-
定位:Android 组件间(如 Activity/Service)、App 与系统服务通信的底层核心,基于 C/S 架构。
-
优势:相比 Linux 传统 IPC(管道、Socket),仅需 **1 次数据拷贝**(传统 IPC 需 2 次完整拷贝:用户态→内核态→目标用户态);Binder 借助内核共享缓存区 + 内存映射(`mmap`),客户端仅拷贝 1 次数据到内核缓存,服务端直接映射读取无需二次拷贝,等效实现高效传输,大幅提升通信效率。自带 UID/PID 身份校验,安全性更强,Binder 通信时会自动携带双方进程的 UID/PID,系统可据此校验进程身份合法性,防止恶意进程冒充调用,保障通信安全。传统 IPC(管道、Socket、共享内存)系统只负责传输数据,不验证通信双方的身份。
-
核心角色:客户端、服务端、ServiceManager(服务注册与查询的中介)。
-
开发应用:日常通过 AIDL、Messenger 间接使用,系统服务调用(如 WindowManager)底层也是 Binder 通信。