我有一个应用程序可以操作大量(~100)位图 - 即音乐封面艺术。位图有两种使用方式 - 作为大背景和小 (50dip) 图标。 将两种尺寸作为单独的位图预加载和缓存是否有意义? 我已经实现了这两种方法(使用大位图作为图标 | 缓存两种尺寸),但我看不到实际的性能差异。 这种情况的最佳做法是什么?
最佳答案
缓存两种图像尺寸没有意义,它占用太多内存。
最佳做法是(以我的拙见):
- 确保您的缓存使用 SoftReferences ,这样你就可以确保你不会耗尽内存,并且总是可以加载新的位图,以丢失旧位图为代价。
- 使用 Canvas 的 drawBitmap 方法将大型位图绘制得更小。
- 一定要防范OutOfMemoryError ,并注意它是 Throwable 的子类,而不是 Exception 的子类,因此
catch(Exception e)
子句不会捕获它。
关于Android位图缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994496/