Я получаю некоторые данные JSON, содержащие некоторые пункты меню продуктов
Обратите внимание: это всего лишь образец, в нем больше двух изображений и много других элементов меню!
{
"menu": [
{
"url": "/api/v1/menu/1",
"name": "Best Food",
"description": "really nice food",
"opening_time": "every day from 9am to 6pm",
"contact_email": "[email protected]",
"tel_number": "+54 911 3429 5762",
"website": "http://bestfood.com",
"images": [
{
"url": "https://blahblah/image1.jpg"
},
{
"url": "https://blahblah/image2.jpg"
}
]
},
]
}
Каждый элемент имеет некоторую информацию и массив URL-адресов изображений.
Я использую библиотеку изображений Glide для обработки этих изображений и Retrofit 2.0 для загрузки данных JSON с конечной точки. Все хорошо на данный момент.
Однако мне нужно сохранить эти загруженные данные для автономного доступа.
В настоящее время я использую ORM Lite для своих существующих моделей для хранения всех данных JSON в базе данных. Эта часть в порядке.
Однако в моей базе данных я сохраняю только URL-адреса изображений, так как мне сказали, что это неплохой подход для хранения изображений (как blob) в базе данных.
Итак, в моем приложении есть раздел для просмотра сохраненного меню с возможностью его загрузки для автономного доступа, если пользователь выбирает.
На данном этапе стоит упомянуть, что у меня уже есть необработанная информация меню в базе данных, потому что пользователю нужно будет сначала просмотреть меню, чтобы получить его в БД.
Но проблема заключается в изображениях.
Вот где я не знаю, как действовать, но я перечисляю решения и проблемы, о которых я думаю, и надеялся, что люди могут посоветовать мне, что является лучшим способом действий.
-
Используйте сервис для загрузки изображений. Это я считаю обязательным, потому что я не знаю, сколько будет изображений, и я хочу, чтобы загрузка продолжалась, даже если пользователь выходит из приложения
-
У Glide есть опция только для загрузки изображений, и вы можете настроить, где находится ее кеш (внутренняя частная или внешняя публикация), когда я читаю здесь и здесь. Проблема в том, что мне не очень удобно устанавливать размер кеша, поскольку я не знаю, что требуется. Я хотел бы установить неограниченное количество.
-
Мне нужно иметь возможность удалять сохраненные данные меню, особенно если он сохранен во внешнем общедоступном каталоге, поскольку это не удаляется при удалении приложения и т.д., или если пользователь хочет удалить сохраненное меню изнутри приложение. Я думал, что я могу хранить URI файла изображения или местоположение всего сохраненного меню в базе данных для этого, но не уверен, что это хороший способ
-
Я читал в разных источниках и ответах, что в этом случае для простого кэширования изображений на SD-карте и т.д. я должен специально использовать сетевую библиотеку для этого, чтобы избежать выделения растрового изображения в кучу памяти. В настоящее время я использую OK HTTP в своем приложении.