2012-03-19 74 views
6

当加载从资源的位图,如下所示:Android资源:如何从资源中加载位图来处理内存?

iv.setImageResource(R.drawable.image); 
  1. 如果位图是由Scaletype质量下降,它仍然保存了整个原始位图? (我猜是的,因为可以随时更改Scaletype,并且您希望获得完整的质量。)
  2. 如果您将相同的资源ID加载到多个ImageView中,是否只有一个位图存储在内存中?
  3. 在onDestroy中扫描视图层次结构并手动回收这些位图(通过从ImageView中提取BitmapDrawable)或者我可以确定这是由系统及时完成的​​吗?

回答

0
  1. 是的,它会保持完整的质量。
  2. 不,它会保持单个对象。
  3. 它将由系统完成。不需要打扰。但是,它等到某个缓冲区填满了调用GC的数据。一旦缓冲区填充了不需要的数据,那么一次将从内存中移除对象。如果你仍然想要,你可以保重。
+0

是的,这就是我的想法。我发现我需要在某些设备上进行手动GC以防止崩溃。我仍然不确定这是否仅仅是这些设备所固有的,或者我是否正在做一些根本性错误。我猜想另一个SO帖子:-)谢谢 – 2012-03-19 18:57:54