2011-02-14 50 views
2

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

回答

7

在缓存两个图像大小时没有意义,内存太多。

最好的做法是(以我愚见):

  1. 确保您的缓存使用SoftReferences,这种方式可以确保你没有用完的内存,并且可以随时加载新的位图在损失旧的“费用”上。
  2. 使用Canvas的drawBitmap方法绘制较小的大尺寸位图。
  3. 请确保您防范OutOfMemoryError,并注意它是Throwable的子类,而不是Exception的子类,因此catch(Exception e)子句不会捕获它。
+0

感谢您的SoftReference!这是我错过的重要一点。 – 2011-02-14 16:45:07

1

就个人而言,我会尽我所能来限制我在内存中保留的位图数量。如果图标看起来像较大位图的缩小副本看起来不错,我会赞成这种方法。这可能是一个有偏见的观点,因为我的个人经验,但我使用Android的经验中遇到的最大问题是使用Bitmap时内存不足