Android资源:从资源加载的位图如何以内存方式处理?

Jor*_*mar 6 java memory android imageview

从这样的资源加载位图时:

iv.setImageResource(R.drawable.image);
Run Code Online (Sandbox Code Playgroud)
  1. 如果Scalemap的质量降低了位图,它是否仍然保存整个原始位图?(我猜是的,因为人们可以动态改变Scaletype,你会希望拥有完整的质量.)
  2. 如果您将相同的资源ID加载到多个ImageView中,是否只有一个位图存储在内存中?
  3. 在onDestroy中扫描视图层次结构并手动回收这些位图(通过从ImageView中提取BitmapDrawable)是不错的做法,还是我可以确定这是由系统及时完成的​​?

Pav*_*oid 0

  1. 是的,它将保持完整的质量。
  2. 不,它将维护一个对象。
  3. 这将由系统完成。无需打扰。但是,它会等到某个缓冲区填满数据才能调用 GC。一旦缓冲区填满了不需要的数据,那么这些对象就会从内存中删除。如果你还想要的话,你可以照顾一下。