Android缓存图片的最佳方式

时间:2013-10-09 23:05:04

标签: android caching android-lru-cache diskcache

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

Lazy load of images in ListView

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

2 个答案:

答案 0 :(得分:1)

我建议的方式是将图像从网络存储到SD卡或其他东西,然后将URI存储在图像所在的位置。列表中的内容只是从uri加载图像。

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

BTW内存限制始终存在于android

答案 1 :(得分:1)

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