Android缓存图像的最佳方式

标签 android caching android-lru-cache diskcache

我正在尝试构建最有效的方法来为我的应用程序缓存从网络下载的图像,几年前我尝试这样做,但直到我偶然发现懒惰列表适配器在这里找到:

Lazy load of images in ListView

在引入 android 4.0 之前,此方法运行良好,此时应用程序会在加载 10 到 20 张图像后崩溃,而以前我可以简单地加载任意数量的图片而不会出现任何问题,这是我后来发现的是 Ice Cream Sandwich 对每个应用程序的内存使用设置了限制的结果,这在 Gingerbread 2.3 及以下版本中不存在,我最终决定每 10 张左右的图像清除缓存以避免崩溃,但是用户体验是'这样做的结果非常好,并且该应用程序使用了大量数据,因为它不断地一遍又一遍地重新下载已经查看过的图像,此后我尝试使用 lru 缓存,但这似乎根本不起作用,特别是当我离开应用程序并重新启动它时,图像似乎都被释放了,我需要一个更好的方法来做到这一点,我注意到其他应用程序(如 instagram)似乎已经找到了一种方法来缓存数百兆字节的图像,我一直必须在我的设置中手动清除 instagram 缓存,因为它们似乎能够存储无限大小的缓存,似乎永远不会弹出其内容,有人知道如何构建这种缓存吗?

最佳答案

您可以尝试使用 https://github.com/nostra13/Android-Universal-Image-Loader 图书馆。这为您完成了大部分艰苦的工作。

关于Android缓存图像的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19284314/

相关文章:

android - 如何在工作管理器中访问房间数据库以定期同步?

javascript - 与浏览器缓存相关的查询

java - Guava 缓存可以使用的最大优选大小是多少?

android - LRUCache 未按预期工作

android - 如何在 Android 中实现内存图像缓存?

java - 应用“按名称排序”时顺序错误

android - 纵向android中的横向布局

Android:位图的 LruCache 问题

android - 我可以使用Gradle获取所有子项目的依赖树吗?

java - Google Guava Cache - 在运行时更改驱逐超时值