Ers*_*man 12 java android json caching android-glide
我得到一些包含一些食物菜单项的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"
}
]
},
]
}
Run Code Online (Sandbox Code Playgroud)
每个项目都有一些信息和一组图像URL.
我正在使用Glide图像库来处理这些图像,并使用Retrofit 2.0从端点下载JSON数据.一切都很顺利.
但是,我需要存储此下载的数据以供离线访问.
目前,我在现有模型上使用ORM Lite将所有JSON数据存储在数据库中.这部分还可以.
但是,在我的数据库中,我只存储图像URL,因为我被告知在数据库中存储图像(作为blob)不是好方法.
因此,我的应用程序中有一个部分可以查看已保存的菜单,如果用户选择,可以选择将其下载以供脱机访问.
此时值得一提的是,我已经在数据库中拥有原始菜单信息,因为用户必须首先查看菜单才能在DB中获取它.
但问题是图像.
这是我不知道如何进行的地方,但我列出了我正在考虑的解决方案和问题,并希望人们可以告诉我什么是最好的行动方案.
使用服务下载图像.我认为这是强制性的,因为我不知道将有多少图像,即使用户退出应用程序,我也希望继续下载
Glide有一个仅下载图像选项,您可以在此处和此处阅读其配置缓存所在的位置(内部私有或外部公共).问题是我对设置缓存大小感到不舒服,因为我不知道需要什么.我想设置无限.
我需要能够删除保存的菜单数据,特别是如果它保存在外部公共目录中,因为在删除应用程序时不会删除该菜单数据,或者如果用户选择从应用程序中删除已保存的菜单.我以为我可以将文件图像URI或整个保存菜单的位置存储在数据库中,但不确定这是否是一种好方法
我在不同的来源和答案中读到,在这个用例中只是将图像缓存到SD卡等,我应该专门使用网络库来避免将位图分配给堆内存.我目前在我的应用程序中使用OK HTTP.
如果您希望即使用户退出也能继续下载,那么使用服务可能是一个不错的选择。getExternalStorageDirectory()
当您的应用程序被卸载时,存储在使用创建的目录中的图像将被自动删除。此外,您可以检查内部存储器是否足够大以存储图像。如果您使用此方法,这些图像将在卸载应用程序时被删除。
归档时间: |
|
查看次数: |
1607 次 |
最近记录: |