1

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

ListView 中图像的延迟加载

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

4

2 回答 2

1

我建议的方法是将图像从网络存储到 sdcard 或其他东西,然后存储法师所在的 URI。列表中的 只是从 uri 加载图像。

如果您的图像尺寸很大,您可能应该在保存之前调整图像大小,以便使用更少的内存并且加载速度更快,因为处理已经完成

顺便说一句,内存限制一直存在于 android

于 2013-10-09T23:12:04.980 回答
1

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

于 2013-10-10T00:16:45.543 回答