Подтвердить что ты не робот

Как обновить пользовательский интерфейс от службы Android с помощью RxJava/RxAndroid

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

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

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

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

4b9b3361

Ответ 1

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

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