如何缓存图片?

how to cache images?

我正在编写一个 android 应用程序,它将有一个图像提要,例如 instagram 应用程序。我的问题是如何缓存这些图像,以免出现内存不足异常?

看过一些教程,但是都是在LruCache中缓存Bitmaps。我可能是错的,但我认为 ImageView 中的位图和缓存的位图使用相同的内存量。

我正在考虑将压缩图像(例如 JPEG)存储在内存缓存中(当然还有磁盘上),并且仅当它在屏幕上可见时才显示它,但是 CPU 会耗尽电池,因为它会在 ImageView 不可见时不断清除它,并解压缩图像并在它位于视口中时显示它。而且我不确定滚动是否会无延迟,即使我在新线程上进行滚动也是如此。

另一种方法是按照我上面描述的那样做,但我不会立即从图像视图中删除位图,只有当有很多图像并且我会 运行 内存不足时。

你怎么看?

以下是有关如何在内存和磁盘中缓存图像的分步示例:

http://androidexample.com/Download_Images_From_Web_And_Lazy_Load_In_ListView_-_Android_Example/index.php?view=article_discription&aid=112&aaid=134

但您也可以使用已经运行良好的库,例如:

http://square.github.io/picasso/

第一个 link 还包含有关应如何处理位图以避免 outOfMemory.

的说明