Как обновить пользовательский интерфейс от службы Android с помощью RxJava/RxAndroid
У меня есть Bound Service, которая отвечает за загрузку файлов и, следовательно, знает статус загрузки/прогресс. И пользовательский интерфейс (Fragment или Activity) должен показывать/обновлять процесс загрузки из службы.
На самом деле я считаю, что общий способ - использовать BroadcastReciever
или CallBack
из Activity. Но я где-то слышал об использовании RxJava (ReactiveX Programming) и медиатора (и кинжала, чтобы ввести его как в сервис, так и в действие), о котором говорится ниже.
Итак, мой вопрос заключается в том, как обращаться с RxJava с помощью этой группы вещей? Все образцы кода? Есть ли другой эффективный способ, чем использование намерений?
Ресурс:
Более эффективный способ обновления пользовательского интерфейса от службы, чем намерения? [см. первое обновление ответа]
Ответы
Ответ 1
Подкласс Binder
, который вы используете, когда что-то связывается с вашим Service
, может выдать метод, который возвращает Observable
, который испускает данные о ходе выполнения.
Предостережение с этим подходом заключается в том, что у вас есть два ресурса, которые необходимо освободить, когда экземпляр Activity
больше не действителен: соединение с сервисом и наблюдаемая подписка.