О единых источниках истины в документе Google сказано:
При использовании этой модели база данных служит единственным источником истины, а другие части приложения получить к нему доступ с помощью нашего UserRepository. Независимо от того, используете ли вы дисковый кеш, мы рекомендуем, чтобы ваш репозиторий назначил источник данных единственным источником достоверных данных для остальной части вашего приложения.
https ://developer.android.com/jetpack/guide?gclid=CjwKCAjwo4mIBhBsEiwAKgzXOH1Pq--Ws1PLzUiSP4RmDE6 АвторKfEi6mdXu5g86btqveIdJvvrgYuxBoCz8wQAvD_BwE&gclsrc=aw.ds#connect-viewmodel-repository
Согласно документу, я сохраняю все данные, когда извлекал данные с удаленного сервера, и я получаю данные только из комнаты, когда мне нужно использовать их в деятельности (на самом деле я собираю поток, который определен в модели представления).
Кажется, это так хорошо! Это позволяет избежать смешивания разных источников данных! Но на самом деле постепенно я обнаружил какой-то странный вопрос:
В моем приложении у меня есть список, который сервер может изменить (поскольку у нас есть веб-сайт менеджера данных, администратор которого может обновлять или удалять данные). Поэтому, чтобы получить новейшие данные списка с сервера, я должен очистить все данные, хранящиеся в комнате, и снова получить данные с удаленного сервера. Эта операция кажется избыточной: «почему я могу получать данные непосредственно с удаленного сервера», я имею в виду, что я получаю данные только из удаленного источника, это тоже правда единственного источника. А также это вызывает проблему: мое приложение на мгновение мигает, потому что очистка данных делает список пустым, а данные с сервера - полным!
Самое главное, что оно похоже на локальный данные не нужны, потому что я должен получать самый новый список с удаленного сервера.
Некоторые люди могут сказать, что сохранение данных в комнате может сделать наше приложение доступным в автономном режиме. Я согласен с этим, но в этом месте мой элемент списка представляет собой URL-адрес изображения, и после щелчка по нему приложение перейдет к новому действию и отобразит базу ImageView на URL-адресе, который мы получим из списка. Если приложение находится в автономном режиме, ImageView также не может загрузить URL-адрес.
Я так запутался, что не смог сразу загрузить все URL-адреса изображений (используйте base64-url, чтобы избежать недопустимой загрузки). Кроме того, потому что данных очень много. И если я скажу, что мне нужна функция поиска в этом списке и мне нужно загрузить в свою комнату столько невероятных данных, это покажется таким нереальным и фантастичным!
Короче:
Необходимо ли помещение? Не удалось просто получить данные с удаленного устройства?
Если необходимо место, как решить проблему, с которой я столкнулся, является ли мое неправильное использование причиной проблемы?
Подробнее здесь: https://stackoverflow.com/questions/685 ... h-question