EventBus README

The project's README from github.com/greenrobot/EventBus. As one markdown file: README.md.

EventBus

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

Build Status Follow greenrobot on Twitter

EventBus...

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.

Android projects:

implementation("org.greenrobot:eventbus:3.3.1")

Java projects:

implementation("org.greenrobot:eventbus-java:3.3.1")
<dependency>
    <groupId>org.greenrobot</groupId>
    <artifactId>eventbus-java</artifactId>
    <version>3.3.1</version>
</dependency>

R8, ProGuard

If your project uses R8 or ProGuard this library ships with embedded rules.

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

Features

Documentation

Changelog

FAQ

License

Copyright (C) 2012-2021 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.

EventBus (greenrobot/EventBus)

Searching Database…

24.7K ·GitHub
Что это такое?EventBus — это шина событий типа «публикация/подписка» для Android и Java. Она упрощает обмен данными между компонентами — Activity, Fragment, потоками, Service — и развязывает отправителей событий и их получателей.
То есть это библиотека, которую я подключаю к своему приложению, а не фреймворк, который его перехватывает?Библиотека: весь jar весит совсем немного (~60 КБ). Вы подключаете её к своему существующему Android- или Java-проекту там, где компонентам нужно обмениваться данными.
Как использовать её в своём приложении?Три шага: опишите классы событий; объявите методы-подписчики и аннотируйте их (при желании с режимом потока) и регистрируйте/отменяйте регистрацию — на Android обычно в рамках жизненного цикла Activity или Fragment; затем публикуйте события.
Как добавить её в свой проект?В README есть готовые сниппеты зависимостей для Android и обычных Java-проектов. Если вы используете R8 или ProGuard, ничего дополнительно настраивать не нужно — необходимые правила уже встроены.
Есть ли подводные камни, о которых стоит знать?Да — в README настоятельно рекомендуется использовать процессор аннотаций EventBus с индексом подписчиков, что позволяет избежать проблем, связанных с рефлексией и встречающихся на практике.
Зачем нужна шина событий, если компоненты могут вызывать друг друга напрямую?Прямые связи создают жёсткие, чреватые ошибками зависимости и проблемы с жизненным циклом. EventBus развязывает отправителей и получателей, обходит эти проблемы жизненного цикла и делает код проще.
Что она умеет помимо базовой публикации и подписки?Есть продвинутые возможности, например потоки доставки (методы-подписчики могут выполняться в выбранном вами режиме потока) и приоритеты подписчиков, так что вы сами управляете тем, как и в каком порядке доставляются события.
Она не будет тормозить моё приложение?В README её называют быстрой, с хорошей производительностью в работе с Activity, Fragment и фоновыми потоками — при этом вся библиотека представляет собой jar размером ~60 КБ.
Она проверена в реальных приложениях?Да — в README сказано, что на практике её проверили приложения с суммарно более 1 000 000 000 установок, а проект существует с 2012 года.
Creator
greenrobot
Size
1.7 MB
Stars
24.7K
Age
14y
Commits · 90 Days