Как обновить интерфейс от Android-сервиса, используя RxJava / RxAndroid

У меня есть служба Bound, которая отвечает за загрузку файлов и, следовательно, знает статус загрузки / прогресс. И пользовательский интерфейс (фрагмент или действие) должен показывать / обновлять загрузку с услуги.

На самом деле я считаю, что общий способ – использовать BroadcastReciever или CallBack из Activity. Но я где-то слышал о том, как использовать RxJava (ReactiveX Programming) и класс посредника (и кинжал, чтобы внедрить его как в сервис, так и в действие), о котором говорится ниже.

Итак, мой вопрос заключается в том, как обращаться с RxJava с этими кучей вещей? Все образцы кода? Есть ли другой эффективный способ, чем использование намерений?

Ресурс: более эффективный способ обновления пользовательского интерфейса от службы, чем намерения? [См. Обновление первого ответа]

Подкласс класса Binder вы используете, когда что-то связывается с вашим Service может выдать метод, который возвращает Observable который испускает данные о ходе работы.

Предостережение с этим подходом состоит в том, что у вас есть два ресурса, которые необходимо освободить, когда экземпляр Activity больше недействителен: подключение к службе и наблюдаемая подписка.