Руководство по EventBus Гуавы
1. обзор
Библиотека Guava предоставляетEventBus, которые позволяют осуществлять обмен данными между компонентами по подписке. В этом руководстве мы рассмотрим, как использовать некоторые функцииEventBus.
2. Настроить
Для начала добавляем зависимость библиотеки Google Guava вpom.xml:
com.google.guava
guava
21.0
Последнюю версию можно найтиhere.
3. ИспользуяEventBus
Начнем с простого примера.
3.1. Настроить
Начнем с рассмотрения объектаEventBus. Он может регистрировать слушателей и публиковать события. Использовать его так же просто, как создать экземпляр класса:
EventBus eventBus = new EventBus();
Библиотека Guava дает вам свободу использованияEventBus любым способом, который наилучшим образом соответствует вашим потребностям в разработке.
3.2. Создание слушателей
Мы создаем класс слушателя, который имеет методы-обработчики для получения определенных событий. Мы аннотируем методы-обработчики с помощью@Subscribe. Метод принимает в качестве аргумента объект того же типа, что и публикуемое событие:
public class EventListener {
private static int eventsHandled;
@Subscribe
public void stringEvent(String event) {
eventsHandled++;
}
}
3.3. Регистрация слушателей
Мы можем подписаться на событие, зарегистрировав наш классEventListener наEventBus:
EventListener listener = new EventListener();
eventBus.register(listener);
3.4. Отмена регистрации слушателей
Если по какой-либо причине мы хотим отменить регистрацию класса вEventBus, это также легко сделать:
eventBus.unregister(listener);
3.5. Публикация событий
Мы также можем публиковать события с помощьюEventBus:
@Test
public void givenStringEvent_whenEventHandled_thenSuccess() {
eventBus.post("String Event");
assertEquals(1, listener.getEventsHandled());
}
3.6. Публикация пользовательских событий
Мы также можем указать собственный класс событий и опубликовать это событие. Начнем с создания пользовательского события:
public class CustomEvent {
private String action;
// standard getters/setters and constructors
}
Добавление метода обработчика в классEventListener для этого события:
@Subscribe
public void someCustomEvent(CustomEvent customEvent) {
eventsHandled++;
}
Теперь мы можем опубликовать наше пользовательское событие:
@Test
public void givenCustomEvent_whenEventHandled_thenSuccess() {
CustomEvent customEvent = new CustomEvent("Custom Event");
eventBus.post(customEvent);
assertEquals(1, listener.getEventsHandled());
}
3.7. Обработка событияUnsubscribed
Нам предоставляется классDeadEvent, который позволяет нам обрабатывать любые события, у которых нет слушателей. Мы можем добавить метод для обработки классаDeadEvent:
@Subscribe
public void handleDeadEvent(DeadEvent deadEvent) {
eventsHandled++;
}
4. Заключение
В этом руководстве мы использовали простой пример в качестве руководства по использованию GuavaEventBus.
Вы можете найти полный исходный код и все фрагменты кода для этой статьиover on GitHub.