Xiaofei-it/HermesEventBus
⭐ 1,616 · Java · GitHub 仓库
一个用于跨进程使用EventBus的库,适用于IPC或插件开发场景。
一句话总结
扩展EventBus实现Android进程间无缝通信,让跨进程事件发布变得简单易行。
🔥 核心能力与独特卖点
- 跨进程事件总线:突破了标准EventBus的根本限制,支持在不同Android进程之间(而非仅限于单一进程内)发布和接收事件。
- 与EventBus完全一致的API:使用完全相同的
register()、post()方法和@Subscribe注解,零学习成本,现有EventBus用户迁移只需替换依赖。 - 自动进程路由:指定一个进程作为主协调器,自动将任何子进程的事件通过主进程转发至所有其他进程,开发者无需手动管理IPC连接。
- 内置并发与清理机制:集成Concurrent-Utils处理IPC固有的死锁和竞态条件,并提供
destroy()方法防止进程销毁时的DeadObjectException崩溃。 - 支持应用间通信:通过包名连接独立应用,实现跨应用边界的事件驱动架构。
独特卖点:唯一一款能即插即用替代EventBus并透明处理IPC的库,让多进程事件驱动架构像单进程EventBus一样简单。

技术架构
| 组件 | 作用 |
|---|---|
| Hermes | Android IPC框架,处理跨进程方法调用和数据序列化 |
| EventBus | 标准进程内事件分发(v3.0.0) |
| Concurrent-Utils | 解决IPC操作期间的死锁和竞态条件 |
| 主进程 | 指定协调进程,接收所有事件并重新分发 |
流程:事件发布 → Hermes发送至主进程 → EventBus本地分发 → Hermes转发至所有子进程。
快速入门指南
1. 添加Gradle依赖:
gradle
compile 'xiaofei.library:hermes-eventbus:0.3.0'2. 在Application类中初始化:
java
HermesEventBus.getDefault().init(this);3. 注册和发布事件:
java
// 注册订阅者
HermesEventBus.getDefault().register(this);
// 发布事件
HermesEventBus.getDefault().post(new Event());
// 订阅方法
@Subscribe(threadMode = ThreadMode.MAIN)
public void showText(String text) {
textView.setText(text);
}4. 使用完毕时清理:
java
HermesEventBus.getDefault().destroy();5. 应用间通信需在AndroidManifest.xml中添加服务:
xml
<service android:name="xiaofei.library.hermes.HermesService$HermesService0"/>6. 连接其他应用:
java
HermesEventBus.getDefault().connectApp(this, packageName);优缺点与适用场景
优点
- 无缝迁移:对现有EventBus用户友好,相同API、相同注解。
- 自动处理复杂IPC逻辑:路由、并发、清理全自动。
- 支持应用内和应用间通信:配置极少即可实现。
- 文档完善:清晰的初始化和清理生命周期说明。
缺点
- 锁定EventBus 3.0.0:使用旧版
onEventXXX方法的项目需重构为@Subscribe注解。 - 需显式调用
destroy():遗忘可能导致DeadObjectException崩溃。 - 外部依赖链:依赖Hermes和EventBus两个库,增加APK大小和依赖管理复杂度。
- 非Kotlin优先:库基于Java,虽可在Kotlin中使用但无原生支持。
不适用人群
- 单进程应用:若应用完全运行在单个进程中,标准EventBus更简单、依赖更少。
- 使用EventBus 2.x及
onEventXXX方法的项目:除非确实需要IPC,否则重构成本可能大于收益。 - 需要响应式流(RxJava、Kotlin Flow)的团队:本库基于回调/注解,非响应式管道。
- 对安全要求极高的应用间通信:应用间IPC存在固有安全风险,本库未明确处理。
理想使用场景
- 多进程Android应用:后台服务、内容提供者或远程进程需要共享事件的应用。
- 插件化架构:宿主应用与运行在独立进程中的插件APK通信。
- 应用套件:同一开发者开发的多个应用需要实时事件同步(如配套应用)。
- 将现有EventBus应用迁移至多进程架构:以最小代码改动实现。
社区活跃度
HermesEventBus拥有1,616颗星,作为解决Android开发中真实痛点的针对性方案,获得了坚实的社区认可。该项目解决了开发者在将应用扩展至单进程架构时经常遇到的难题。虽然最后更新于2026年,但该库基于稳定成熟的依赖(EventBus 3.0.0和Hermes),因此更可能是功能完备且可用于生产环境而非被弃用。对于已投入EventBus生态的团队而言,这是一款精心设计的扩展,填补了关键空白。