Android资源:如何在内存方面处理从资源中加载的位图?

6

当你从资源中加载位图如下所示:

iv.setImageResource(R.drawable.image);
  1. 如果使用Scaletype降低位图的质量,它是否仍保存整个原始位图?(我猜是的,因为可以在运行时更改Scaletype,并且希望保留完整的质量。)
  2. 如果将相同的资源ID加载到多个ImageView中,内存中只存储一个位图吗?
  3. 在onDestroy中手动扫描视图层次结构并回收这些位图(通过从ImageView中提取BitmapDrawable),这样做是否是良好的实践,或者我可以确信系统会及时完成此操作?
1个回答

0
  1. 是的,它将保持完整的质量。
  2. 不,它将维护单个对象。
  3. 这将由系统完成。无需担心。但是,它会等待直到某个缓冲区填充了数据以调用GC。一旦缓冲区填满了不需要的数据,那么对象将一次性从内存中删除。如果您仍然想要,可以自行处理。

是的,这正是我想到的。我发现在某些设备上需要手动进行垃圾回收以防止崩溃。我仍然不确定这是否只是这些设备固有的问题,还是我做错了一些根本性的事情。我猜这是另一个SO帖子的问题 :-) 谢谢 - Joris Weimar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接