Как использовать EventBus GreenRobot в трансляции событий от Сервиса к Активности?

Недавно я узнал о библиотеке EventBus. В основном мой вариант использования вращается вокруг службы и Деятельности.

Сервис используется для отслеживания изменений в соединении BLE.

Активность используется для сообщения об этом состоянии соединения в пользовательский интерфейс.

Как я могу добиться того же, используя библиотеку..

1 ответ

Решение

В вашей деятельности onResume метод, зарегистрируйтесь для событий:

EventBus.getDefault().register(this);

И отменить регистрацию в onPause

EventBus.getDefault().unregister(this);

Когда служба работает и получает информацию о BLE, отправьте эту информацию через EventBus:

BLEInfo bleInfo = new BLEInfo(... // create some kind of object to aggregate the info about ble connection
EventBus.getDefault().post(bleInfo);

Наконец, реализуйте поведение действия для получения информации:

public void onEvent(BLEInfo bleInfo) {
    // update your UI based on bleInfo
}
Другие вопросы по тегам