【发布时间】:2015-11-09 13:23:55
【问题描述】:
我得到一些 JSON 数据,其中包含一些食物菜单项
请注意:这只是一个示例,有时会有超过 2 张图像,并且数组中有更多菜单项!
{
"menu": [
{
"url": "/api/v1/menu/1",
"name": "Best Food",
"description": "really nice food",
"opening_time": "every day from 9am to 6pm",
"contact_email": "info@food.com",
"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 有一个只下载图片的选项,当我阅读 here 和 here 时,您可以配置其缓存的位置(内部私有或外部公共)。问题是我对设置缓存大小感到不舒服,因为我不知道需要什么。我想设置无限。
我需要能够删除已保存的菜单数据,尤其是如果它保存在外部公共目录中,因为在删除应用等时不会删除这些数据,或者如果用户选择从内部删除已保存的菜单应用程序。我在想我可以为此将文件图像 URI 或整个保存菜单的位置存储在数据库中,但不确定这是否是一个好方法
我阅读了不同的来源和答案,在这个用例中只是将图像缓存到 SD 卡等,我应该专门使用网络库来避免将位图分配到堆内存。我目前在我的应用中使用 OK HTTP。
【问题讨论】:
-
让我知道,您是否需要 http 服务来下载无限图像。其实我不清楚你的问题。
-
"...设置缓存大小,因为我不知道需要什么。我想设置无限制。"我相信您的用户不希望您在他们的手机上存储无限的文件:)
标签: java android json caching android-glide