Dears. Раньше я разрабатывал приложения для Android с использованием шаблона MVP, а сейчас пробую MVVM с такими компонентами архитектуры, как DataBind и LiveData.
Я написал свой класс репозитория, который предоставляет LiveData:
LiveData<MyEntity> getById(long id);
Для действия / фрагментов я наблюдаю данные LiveData, предоставляемые ViewModel (который использует мой репозиторий), и все работает нормально.
Проблема в том, что мне нужно запланировать Тревогу для отображения Уведомления с текстом, связанным с MyEntity, поэтому я создал Intent, содержащий MyEntityId в качестве Extra.
Когда AlarmManager вызывает мой BroadcastReceiver, мне нужно использовать репозиторий для получения MyEntity. Дело в том, как «наблюдать» LiveData внутри компонента, не являющегося пользовательским интерфейсом.
Кроме того, я могу запустить IntentService (фоновый поток), чтобы избежать доступа к репозиторию в главном потоке, и использовать что-то вроде «blockingNext» из RxJava, но я все еще не мог найти способ ждать LiveData.
Как правильно это сделать? Обратите внимание, что мой репозиторий не может быть реализован с использованием Room из-за устаревших проблем.
Спасибо
Единственное решение, которое я до сих пор считал, было иметь такие методы в репозитории:
LiveData<MyEntity> getByIdLive(long id);
MyEntity getById(long id);
Но это не выглядит хорошо для меня.
Поэтому я хотел бы спросить, как правильно реализовать это.
С наилучшими пожеланиями