如何缓存图片?
how to cache images?
我正在编写一个 android 应用程序,它将有一个图像提要,例如 instagram 应用程序。我的问题是如何缓存这些图像,以免出现内存不足异常?
看过一些教程,但是都是在LruCache中缓存Bitmaps。我可能是错的,但我认为 ImageView 中的位图和缓存的位图使用相同的内存量。
我正在考虑将压缩图像(例如 JPEG)存储在内存缓存中(当然还有磁盘上),并且仅当它在屏幕上可见时才显示它,但是 CPU 会耗尽电池,因为它会在 ImageView 不可见时不断清除它,并解压缩图像并在它位于视口中时显示它。而且我不确定滚动是否会无延迟,即使我在新线程上进行滚动也是如此。
另一种方法是按照我上面描述的那样做,但我不会立即从图像视图中删除位图,只有当有很多图像并且我会 运行 内存不足时。
你怎么看?
以下是有关如何在内存和磁盘中缓存图像的分步示例:
但您也可以使用已经运行良好的库,例如:
http://square.github.io/picasso/
第一个 link 还包含有关应如何处理位图以避免 outOfMemory.
的说明
我正在编写一个 android 应用程序,它将有一个图像提要,例如 instagram 应用程序。我的问题是如何缓存这些图像,以免出现内存不足异常?
看过一些教程,但是都是在LruCache中缓存Bitmaps。我可能是错的,但我认为 ImageView 中的位图和缓存的位图使用相同的内存量。
我正在考虑将压缩图像(例如 JPEG)存储在内存缓存中(当然还有磁盘上),并且仅当它在屏幕上可见时才显示它,但是 CPU 会耗尽电池,因为它会在 ImageView 不可见时不断清除它,并解压缩图像并在它位于视口中时显示它。而且我不确定滚动是否会无延迟,即使我在新线程上进行滚动也是如此。
另一种方法是按照我上面描述的那样做,但我不会立即从图像视图中删除位图,只有当有很多图像并且我会 运行 内存不足时。
你怎么看?
以下是有关如何在内存和磁盘中缓存图像的分步示例:
但您也可以使用已经运行良好的库,例如:
http://square.github.io/picasso/
第一个 link 还包含有关应如何处理位图以避免 outOfMemory.