EventBus:Android 和 Java 的发布订阅事件总线
EventBus:Android 和 Java 的发布/订阅事件总线
EventBus 是 greenrobot 开发的一款发布/订阅事件总线库,用于 Android 和 Java 应用中的组件间通信。该项目在 GitHub 上获得了 24,723 个 Star。

在 Android 开发中,Activity、Fragment、Service 之间的数据传递一直是个痛点。传统做法依赖接口回调、广播或 Intent,代码耦合度高,生命周期管理容易出错。
EventBus 用发布/订阅模式处理这个问题。发送方发出一个事件对象,接收方通过注解方法订阅事件,框架负责分发。两边没有直接依赖,代码结构干净很多。

核心特点
EventBus 的 jar 包只有约 60KB,非常轻量。它支持指定线程模式,事件可以切到主线程或后台线程处理,也支持设置订阅者优先级。该项目经过大规模实际检验,累计安装量超过 10 亿次。
三步上手
第一步,定义事件类:
public static class MessageEvent { /* 按需添加字段 */ }
第二步,声明订阅方法并完成注册:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
// 处理事件
}
在 Activity 的 onStart 中调用 register,在 onStop 中调用 unregister,跟随生命周期管理订阅。
第三步,发送事件:
EventBus.getDefault().post(new MessageEvent());
集成方式
Android 项目通过 Gradle 引入:
implementation("org.greenrobot:eventbus:3.3.1")
Java 项目:
implementation("org.greenrobot:eventbus-java:3.3.1")
EventBus 内置了 R8 和 ProGuard 混淆规则,引入后无需额外配置。
greenrobot 团队建议使用注解处理器生成订阅者索引(subscriber index),避免运行时反射的开销,大型项目中效果明显。
EventBus 采用 Apache 2.0 开源协议。greenrobot 团队同时维护着 ObjectBox 数据库和 Essentials 工具库。
事件总线方案在社区中存在争议,但 EventBus 凭借轻量和稳定,一直是 Android 组件通信的主流选择。项目文档齐全,上手门槛低,适合需要解耦组件通信的开发场景。
us 凭借轻量和稳定,一直是 Android 组件通信的主流选择。项目文档齐全,上手门槛低,适合需要解耦组件通信的开发场景。
更多推荐



所有评论(0)