Как загрузить изображения в шаблон репозитория Android MVVM

#android #mvvm #repository

#Android #mvvm #репозиторий

Вопрос:

Я разрабатываю приложение для Android, и мне нужно сохранить некоторые изображения с URL-адреса во внутреннюю память смартфона. Теперь в репозитории я использую поток вывода файла и извлекаю uri с помощью Android FileProvider с контекстом приложения и сохраняю строку as в базе данных Room. Но этот подход нарушает шаблон MVVM, потому что репозиторий ничего не должен знать о контексте. Должен ли я вызывать службу из Activity / Fragment (возможно, на переднем плане, чтобы загрузка завершилась, даже если приложение будет уничтожено)? Есть другие методы?

Спасибо

Ответ №1:

Я полагаю, вы могли бы просто разрешить uri в a ByteArray или любой другой формат, который вы предпочитаете, где у вас есть контекст (действие или фрагмент), и передать его таким образом в Room

Комментарии:

1. Спасибо за комментарий! Мое приложение загружает из Google places api данные близлежащих мест, и из этих мест мне нужно загрузить изображения и предоставить uri, вернуться к просмотру, чтобы установить для них значение ImageView. Как вы предлагаете, я должен получить json в репозитории, передать json в представление, загрузить изображения и вернуться в репозиторий, чтобы сохранить Uri в базе данных room?

2. Ах, вы вернете a json , где вы вернете параметры изображений. Я думаю, вы можете просто сохранить photo_reference: String каждое изображение в комнате. И используйте библиотеку загрузки изображений (например: github.com/bumptech/glide ) для загрузки изображения с URL-адресом

3. Да, но проблема в том, что я должен сохранять эту фотографию, а не только загружать ее (для этого у меня есть свой собственный класс с кэшированием памяти и диска, и он работает просто отлично).

4. Обычно мы на самом деле не сохраняем изображения в БД, если вы хотите сохранить их локально, я бы сохранил их во внутреннем хранилище файлов

5. Я понимаю это, и я сохраняю Uri в БД, а не все изображение, которое мне нужно загрузить, и здесь возникает проблема: я знаю, как загрузить изображение, но мне нужен контекст, чтобы получить Uri с помощью file provider и папки, в которой он сохраняется.