EventBus

适用于Android和Java的事件总线,简化了活动,碎片,线程,服务等之间的通信。减少代码,提高质量。(Event bus for Android and Java that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.)

  • 所有者: greenrobot/EventBus
  • 平台: Android
  • 许可证: Apache License 2.0
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

EventBus

EventBus is a publish/subscribe event bus for Android and Java.

Build Status
Follow greenrobot on Twitter

EventBus...

  • simplifies the communication between components
    • decouples event senders and receivers
    • performs well with Activities, Fragments, and background threads
    • avoids complex and error-prone dependencies and life cycle issues
  • makes your code simpler
  • is fast
  • is tiny (~60k jar)
  • is proven in practice by apps with 1,000,000,000+ installs
  • has advanced features like delivery threads, subscriber priorities, etc.

EventBus in 3 steps

  1. Define events:

    public static class MessageEvent { /* Additional fields if needed */ }
    
  2. Prepare subscribers:
    Declare and annotate your subscribing method, optionally specify a thread mode:

    @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(MessageEvent event) {/* Do something */};
    

    Register and unregister your subscriber. For example on Android, activities and fragments should usually register according to their life cycle:

     @Override
     public void onStart() {
         super.onStart();
         EventBus.getDefault().register(this);
     }
    
     @Override
     public void onStop() {
         super.onStop();
         EventBus.getDefault().unregister(this);
     }
    
  3. Post events:

     EventBus.getDefault().post(new MessageEvent());
    

Read the full getting started guide.

There are also some examples.

Note: we highly recommend the EventBus annotation processor with its subscriber index.
This will avoid some reflection related problems seen in the wild.

Add EventBus to your project

Available on Maven Central.

Via Gradle:

implementation 'org.greenrobot:eventbus:3.2.0'

Via Maven:

<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus</artifactId>
    <version>3.2.0</version>
</dependency>

R8, ProGuard

If your project uses R8 or ProGuard add the following rules:

-keepattributes *Annotation*
-keepclassmembers class * {
    @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
 
# And if you use AsyncExecutor:
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
    <init>(java.lang.Throwable);
}

For more details please check the EventBus website. Here are some direct links you may find useful:

Features

Documentation

Changelog

FAQ

How does EventBus compare to other solutions, like Otto from Square? Check this comparison.

License

Copyright (C) 2012-2020 Markus Junginger, greenrobot (https://greenrobot.org)

EventBus binaries and source code can be used according to the Apache License, Version 2.0.

Other projects by greenrobot

ObjectBox (GitHub) is a new superfast object-oriented database.

Essentials is a set of utility classes and hash functions for Android & Java projects.

greenDAO is an ORM optimized for Android: it maps database tables to Java objects and uses code generation for optimal speed.

主要指标

概览
名称与所有者greenrobot/EventBus
主编程语言Java
编程语言Java (语言数: 2)
平台Android
许可证Apache License 2.0
所有者活动
创建于2012-07-16 16:55:40
推送于2024-02-21 18:18:34
最后一次提交2022-07-11 09:59:54
发布数12
最新版本名称V3.3.1 (发布于 )
第一版名称V1.0.1 (发布于 2012-07-31 15:59:36)
用户参与
星数24.8k
关注者数1k
派生数4.7k
提交数550
已启用问题?
问题数587
打开的问题数100
拉请求数31
打开的拉请求数44
关闭的拉请求数59
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?