Компоненты архитектуры Android - связь между Activity/Fragment и Service/IntentService

ответ на этот вопрос дает мне прекрасное руководство как использовать сервисы в среде Android Architecture Components/Jetpack.

Это предполагает, что IntentServices должны просто подключаться к ViewModels через репозитории, как если бы они были любым другим источником данных, например веб-службой.

Но ни в этом ответе, ни в руководстве по Jetpack, на котором оно основано, нет достаточной информации об этом. объект «Удаленный источник данных», который будет запускаться и связываться со службой, отслеживать ее LiveData и каскадировать ее резервное копирование в репозиторий.

Что это такое? Обычный объект Java, который вводится в репозиторий? Синглтон? Какой-то особый подкласс, поддерживающий жизненный цикл?

Откуда он получает контекст, необходимый для запуска службы?

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

введите здесь описание изображения

Заранее спасибо!


person John    schedule 14.11.2018    source источник
comment
Вы нашли правильный ответ? Мне интересно то же самое.   -  person IgorGanapolsky    schedule 12.11.2019


Ответы (2)


Вместо IntentService вы можете использовать компонент AndroidX, который учитывает жизненный цикл (работает с ViewModel). Этот компонент называется WorkManager: https://codelabs.developers.google.com/codelabs/android-workmanager/#0

Другая альтернатива (более сложная) была предложена в другом вашем S.O. post: используйте RxJava Observable/Flowable/Processor для отправки данных из IntentService в ViewModel.

person IgorGanapolsky    schedule 12.11.2019

Имейте базовое действие для всех ваших действий и позволяйте ему привязываться/отвязываться к службе. Иметь промежуточный уровень с репозиторием и посредником, который управляет связью между сервисом и действиями. Ваши ViewModels могут зарегистрироваться в наблюдателе и наблюдать.

person Krishna Teja Medavarapu    schedule 13.03.2019