Я создаю приложение для Android с дизайном MVVM, и у меня есть несколько слоев (view, ViewModel, репозиторий и источник данных как локальный, так и удаленный).
Я хочу, чтобы мой объект репозитория наблюдал источники данных, выполнял всю его логику для того, как и при хранении кэша, отображал данные в правильную форму для указанного выше слоя и только затем уведомлял модель представления о новых данных.
Аналогично тому, что я хочу, чтобы ViewModel наблюдал за хранилищем для поступления новых данных, затем выполнял всю бизнес-логику и только после этого уведомлял представление.
Моя проблема в том, что LiveData требует объекта жизненного цикла, который ViewModel и
хранилище не имеет.
Я читал об использовании простых наблюдаемых, а не LiveData, но я также читал, что это плохая практика, потому что наблюдаемые существуют вечно, и это может привести к странным сбоям. Кроме того, у меня есть PageKeyedDataSource, который возвращает только LiveData.
Я также читал об использовании Transformations.map, но что, если я не хочу отображать данные, а делать что-то более сложное.
Есть ли способ заставить один слой безопасно наблюдать за другим слоем, не создавая цепочку наблюдаемых LiveData от уровня представления до источника данных?
примечание: моя ViewModel используется в нескольких фрагментах, если это как-то актуально.