Android 应该缓存还是下载图像?什么';这是正确的方法吗?

Android 应该缓存还是下载图像?什么';这是正确的方法吗?,android,caching,Android,Caching,一点背景:主页包含大约25个在循环视图中显示的缩略图。我从一个API收到一个JSON响应,其中包含这些图像的URL以及其他数据 我将JSON字符串保存在objectBox数据库实例中,并在需要显示时使用GSON.fromJSON创建实际对象。顺便说一句,我使用MVVM模式 现在我想考虑三种情况: 1) 在更改活动时,操作系统可以随时删除当前未显示的任何活动,而无需发出警告并删除其中的图像。我应该缓存图像(在哪里?在内存中(不想浪费它)还是存储?),还是在用户返回到主活动时,我应该再次下载它们?在

一点背景:主页包含大约25个在循环视图中显示的缩略图。我从一个API收到一个JSON响应,其中包含这些图像的URL以及其他数据

我将JSON字符串保存在objectBox数据库实例中,并在需要显示时使用
GSON.fromJSON
创建实际对象。顺便说一句,我使用MVVM模式

现在我想考虑三种情况:

1) 在更改活动时,操作系统可以随时删除当前未显示的任何活动,而无需发出警告并删除其中的图像。我应该缓存图像(在哪里?在内存中(不想浪费它)还是存储?),还是在用户返回到主活动时,我应该再次下载它们?在我看来,每次用户切换活动时下载图像都会要求很高

2) 当用户完全关闭应用程序并再次启动时,磁盘上未保存的所有内容都将被清除。在这种情况下,我可以下载图像,因为这只是一次过程,数据库可能需要更新

3) 最后,当手机未连接到互联网时,应用程序应显示一些图像,即使这些图像可能不是最新的

所以我的问题是,在这样的场景中,应该如何缓存图像?正确的方法是什么


我可以直接在objectBox中缓存图像,还是使用SQLite更好?或者我应该使用像毕加索这样的其他库进行缓存

通常是的,图像应至少缓存在内存中,具体取决于您的应用程序(重复使用的可能性等)的内存和存储。如果您想支持第三点(脱机时显示),则需要进行存储缓存,而内存缓存是可选的,但可能是一个好主意


使用哪一个库(或者如果你使用一个库,我有很好的理由来使用我自己的库)对于这个网站来说是离题的,因为它的主要观点。我们需要大量关于您的用例的具体知识,以便为一个用例提供建议。

谢谢,我可以使用objectBox进行存储缓存吗?我希望将所有数据保存在一个地方,而不是将图像“缓存在”内部存储器中的某个地方,这与数据库完全无关。数据库中的图像是一个极具争议的问题。我个人的意见是永远不要这样做,但是将文件的位置存储在dbc中是可以的,这就是我想知道的。为什么会有争议?将图像转换为位图对象并像任何其他对象一样存储在objectBox中是不合适的?因为它不可搜索,并且会导致数据库膨胀,可能会影响性能。与存储盒(易于扩展)相比,它还增加了db(一种昂贵、难以扩展的资源)中的负载。当然,围绕这一点的大多数争论都是针对远程dbs的