原理:
Android系统底层提供的轻量级IPC方案,通过Binder
驱动(内核层)实现跨进程对象调用,核心组件包括IBinder
接口、Binder
实体类、BinderProxy
代理对象。
使用场景:
JobScheduler
)优点:
缺点:
Binder
生命周期AIDL
使用原理:
基于Binder
的高层封装,通过Handler
处理消息,包含Messenger
(客户端)和Service
(服务端)两部分。
使用场景:
优点:
缺点:
原理:
通过生成可序列化的接口文件,实现跨进程方法调用,需定义.aidl
文件并生成对应Stub
和Proxy
类。
使用场景:
优点:
缺点:
原理:
通过URI标识共享数据,默认支持query/insert/update/delete
操作,可自定义openType/openAssetFile
扩展功能。
使用场景:
优点:
缺点:
原理:
基于消息总线的发布/订阅模式,通过Intent
携带数据,分为有序广播(OrderedBroadcast
)和无序广播(Broadcast
)。
使用场景:
优点:
缺点:
特性 | Binder | Messenger | AIDL | ContentProvider | Broadcast |
---|---|---|---|---|---|
通信方向 | 双向 | 单向 | 双向 | 单向(查询为主) | 单向 |
数据类型 | 基本类型+Parcelable | Bundle | 复杂对象 | 结构化数据 | Intent |
性能 | 高(≈15-30μs) | 中(≈50-100μs) | 低(≈100-200μs) | 低 | 低 |
开发复杂度 | 高 | 低 | 高 | 中 | 低 |
适用场景 | 高频调用 | 简单任务 | 复杂接口 | 数据共享 | 事件通知 |
A1:
A2:
BC_TRANSACTION
事务Binder.binder->publish()
将实体绑定到驱动层Binder.transact()
触发驱动层消息转发onTransact()
接收并处理请求该机制相比传统RPC减少多次拷贝,且由内核保障进程隔离