Android位图缓存

Eug*_*kov 2 android caching bitmap drawable

我有一个应用程序,它运行大量(~100)的位图 - 即音乐封面艺术.位图以两种方式使用 - 作为大背景和小(50dip)图标.将两个大小预加载和缓存为单独的位图是否有意义?我已经实现了两种方法(使用大位图作为图标|缓存两种尺寸),但我看不到实际的性能差异.这种情况的最佳做法是什么?

Lio*_*ior 7

缓存两个图像大小没有任何意义,它需要太多的内存.

最好的做法是(根据我的拙见):

  1. 确保您的缓存使用SoftReferences,这样您就可以确保不会耗尽内存,并且总是可以在丢失旧版本的"费用"上加载新的位图.
  2. 使用Canvas的drawBitmap方法可以将较大的位图绘制得较小.
  3. 确保你防范OutOfMemoryError,并注意它是Throwable的子类,而不是Exception的子类,所以一个catch(Exception e)子句不会捕获它.

  • 这是两个不相关的观点.您需要使用软引用来确保没有内存不足.缓存到持久存储可能对于在需要时更快地加载图像有用,但这取决于图像的来源:如果它们来自网络,那显然是必要的,如果它们是来自其他应用程序的资源,或者联系图片,没有必要. (3认同)