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

Java Android资源:从资源加载的位图是如何以内存方式处理的?,java,android,memory,imageview,Java,Android,Memory,Imageview,当您从以下资源加载位图时: iv.setImageResource(R.drawable.image); 如果位图的质量因Scaletype而降低,它是否仍保存整个原始位图?(我想是的,因为可以动态地更改Scaletype,并且您希望获得完整的质量。) 如果将相同的资源ID加载到多个ImageView中,内存中是否只存储一个位图 在onDestroy中扫描视图层次结构并手动回收这些位图(通过从ImageView中提取BitmapDrawable)是一种好的做法,还是我可以确保系统能够及时完成这

当您从以下资源加载位图时:

iv.setImageResource(R.drawable.image);
  • 如果位图的质量因Scaletype而降低,它是否仍保存整个原始位图?(我想是的,因为可以动态地更改Scaletype,并且您希望获得完整的质量。)
  • 如果将相同的资源ID加载到多个ImageView中,内存中是否只存储一个位图
  • 在onDestroy中扫描视图层次结构并手动回收这些位图(通过从ImageView中提取BitmapDrawable)是一种好的做法,还是我可以确保系统能够及时完成这项工作
  • 是的,它将保持完全的质量
  • 不,它将维护单个对象
  • 这将由系统完成。不用麻烦了。但是,它会等到某个缓冲区被用来调用GC的数据填满。一旦缓冲区中充满了不需要的数据,对象就会从内存中删除。如果你还想,你可以照顾好自己

  • 是的,我就是这么想的。我确实发现我需要在一些设备上进行手动GC以防止崩溃。我仍然不确定这是这些设备固有的还是我做了一些根本错误的事情。我猜是另一个SO帖子的内容:-)谢谢