Использование LiveData и ViewModel без использования Room - PullRequest
0 голосов
/ 27 мая 2018

В архитектуре android MVVM во всех примерах, которые я видел, люди либо используют Room для хранения / извлечения данных, либо получают данные напрямую из вызовов API через класс Repository.

Я тоже не занимаюсьвызов API или использование базы данных Room для хранения данных.Но мне нужен мой ViewModel, чтобы получить данные из репозитория и передать их моему Actvity.

Может ли ваш класс репозитория наследовать от класса Application, чтобы вы могли сохранять статические переменные / сопутствующие объекты, если вы не собираетесьиспользовать Room для локального сохранения данных?

Какой хороший способ справиться с этим делом?

1 Ответ

0 голосов
/ 27 мая 2018

Как правило, в программной инженерии репозиторий используется для отделения уровня данных (базы данных, веб-службы) от остальной части приложения (обычно непосредственно бизнес-уровня), хорошим примером может служить схема веб-сайта бронирования:

Repository style

Получает обновления через асинхронное соединение Опубликовать / Подписаться и отправляет их другим компонентам.Таким образом, компоненты не зависят друг от друга.
Итак, Repository - это просто простой класс-посредник, который используется для того, чтобы сделать приложение более модульным, чтобы вы могли легче менять части и следить за тем, чтобы остальная часть приложения нене беспокоиться о соединениях с БД или HTTP-вызовах и так далее.Технически, вы можете наследовать от Application (или чего-либо еще) и использовать его для сохранения статических переменных и т. Д.

Но как объяснено здесь :

Объект приложения не гарантированно останется в памяти навсегда, он будет уничтожен.Вопреки распространенному мнению, приложение не будет перезапущено с нуля.Android создаст новый объект Application и запустит действие, в котором он находился ранее, чтобы создать иллюзию, что приложение никогда не было убито.

Так что это полностью ваше дело, вы можете использоватьстиль репозитория, какой вы пожелаете, никак не связан с комнатой или чем-то еще.

...