EventBus是适用于Android和Java的发布/订阅事件总线

EventBus


EventBus 是一个适用于 Android 和 Java 的开源库,它使用发布者/订阅者模式实现松散耦合。EventBus 只需几行代码即可实现与解耦类的集中通信,从而简化代码、消除依赖关系并加快应用开发速度。

EventBus

使用 EventBus 的优势

  • 简化了组件之间的通信
  • 解耦了事件发送方和接收方
  • 与 UI 组件(例如 Activity、Fragment)和后台线程配合良好
  • 避免了复杂且易出错的依赖关系和生命周期问题
  • 速度快;专门针对高性能进行了优化
  • 体积小巧(约 60k jar 文件)
  • 已通过超过 10 亿次安装的应用实践验证
  • 具有交付线程、订阅者优先级等高级功能。

EventBus 的更多功能

  • 便捷的基于注解的 API:只需将 @Subscribe 注解添加到您的订阅者方法即可。由于注解在构建​​时进行索引,EventBus 无需在应用运行时进行注解反射。
  • Android 主线程传递:与 UI 交互时,EventBus 可以在主线程中传递事件,无论事件是如何发布的。
  • 后台线程传递:如果您的订阅者执行长时间运行的任务,EventBus 还可以使用后台线程来避免 UI 阻塞。
  • 事件和订阅者继承:在 EventBus 中,面向对象范式适用于事件和订阅者类。假设事件类 A 是 B 的超类。已发布的 B 类事件也将发布给对 A 感兴趣的订阅者。同样,订阅者类的继承关系也同样适用。
  • 快速入门:您可以立即开始使用,无需任何配置,只需使用代码中任何位置可用的默认 EventBus 实例即可。
  • 可配置:为了根据您的要求调整 EventBus,您可以使用构建器模式调整其行为。

分三步使用EventBus

1.定义事件:

复制代码
```java  
public static class MessageEvent { /* Additional fields if needed */ }
```
  1. 准备订阅者:
    声明并注释您的订阅方法,可选择指定线程模式:

    java 复制代码
    @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(MessageEvent event) {
        // Do something
    }

    注册和注销订阅者。例如,在 Android 上,Activity 和 Fragment 通常应根据其生命周期进行注册:

    java 复制代码
     @Override
     public void onStart() {
         super.onStart();
         EventBus.getDefault().register(this);
     }
    
     @Override
     public void onStop() {
         super.onStop();
         EventBus.getDefault().unregister(this);
     }
  2. 发布事件:

    java 复制代码
     EventBus.getDefault().post(new MessageEvent());

阅读完整的入门指南。此外,还有一些示例

**注意:**我们强烈推荐EventBus 注解处理器及其订阅者索引。这样可以避免一些常见的反射相关问题。

将 EventBus 添加到您的项目

可在 Maven Central 获取。

Android projects:

groovy 复制代码
implementation("org.greenrobot:eventbus:3.3.1")

Java projects:

groovy 复制代码
implementation("org.greenrobot:eventbus-java:3.3.1")
xml 复制代码
<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus-java</artifactId>
    <version>3.3.1</version>
</dependency>

主页、文档、链接

更多详情请访问 EventBus 网站。以下是一些您可能觉得有用的直接链接:

功能

文档

更新日志

常见问题解答

许可证

版权所有 (C) 2012-2021 Markus Junginger,greenrobot (https://greenrobot.org)

EventBus 二进制文件和源代码可根据Apache 许可证,版本 2.0使用。

关于项目

EventBus 是一个适用于 Android 和 Java 的开源库,它使用发布者/订阅者模式实现松散耦合。EventBus 只需几行代码即可实现与解耦类的集中通信,从而简化代码、消除依赖关系并加快应用开发速度。
Apache-2.0
Java
24,758
4666
1034
2012-07-17
2024-02-22

增长趋势 - stars