Android位图缓存

标签 android caching bitmap drawable

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

最佳答案

缓存两种图像尺寸没有意义,它占用太多内存。

最佳做法是(以我的拙见):

  1. 确保您的缓存使用 SoftReferences ,这样你就可以确保你不会耗尽内存,并且总是可以加载新的位图,以丢失旧位图为代价。
  2. 使用 Canvas 的 drawBitmap 方法将大型位图绘制得更小。
  3. 一定要防范OutOfMemoryError ,并注意它是 Throwable 的子类,而不是 Exception 的子类,因此 catch(Exception e) 子句不会捕获它。

关于Android位图缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994496/

相关文章:

android - 如何在应用程序关闭时执行一段代码?

Android ArrayAdapter 和 ListView 缓慢

java - Finalize 方法中的位图回收无法正常工作

php - Symfony2 NGINX 无法创建缓存目录

android - 将不可变位图文件转换为可变位图

.Net 缩略图在从移动设备创建时旋转图像

java - OnSurfaceCreated 未绘制后添加到数组的 OpenGL ES2.0 对象

android - 删除无边框按钮的边框

java - 名称的正则表达式 - 大写且无特殊字符

javascript - 从模式对话框中的 ajax 调用中删除缓存的信息