【问题标题】:Android Resources: How are bitmaps loaded from resources handled memory wise?Android 资源:如何从资源中加载位图以明智地处理内存?
【发布时间】:2012-03-19 12:01:49
【问题描述】:

当你像这样从资源中加载位图时:

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

【问题讨论】:

    标签: java android memory imageview


    【解决方案1】:
    1. 是的,它将保持完整的质量。
    2. 不,它将维护一个对象。
    3. 这将由系统完成。没必要打扰。但是,它要等到某个缓冲区被数据填满才能调用 GC。一旦缓冲区充满了不需要的数据,那么一次对象就会从内存中删除。如果你还想要,你可以保重。

    【讨论】:

    • 是的,我就是这么想的。我确实发现我需要在某些设备上进行手动 GC 以防止崩溃。我仍然不确定这是否只是这些设备固有的,或者我是否在做一些根本错误的事情。我猜另一个 SO 帖子的东西:-) 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多