【问题标题】:Android - bitmap operations, keep source bitmap or use second bitmap and recycle sourceAndroid - 位图操作,保留源位图或使用第二个位图并回收源
【发布时间】:2015-01-04 17:34:56
【问题描述】:

有人会认为第二种方法会更有效,但我不能说我看到使用它有任何改进。以下两者有区别吗? (当然是记忆力)

Bitmap bm=MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null);
bm=cropAndScaleBitmap(bm);
//use bm

Bitmap bm=MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null);
Bitmap b =cropAndScaleBitmap(bm);
bm.recycle();
//use b

【问题讨论】:

    标签: android bitmap recycle


    【解决方案1】:

    注意事项...

    即使您指定了回收,它也只会有任何效果 当触发下一次 GC 时。

    其他注意事项

    1. 在Honeycomb 之前的Android 版本中,位图的内存是(是)从非托管内存分配的。至少需要2 次GC 才能收集它。另一件事是 - 真的很难追踪 - DDMS 看不到它,MAT 也看不到。

    2. 阅读此链接https://developer.android.com/training/displaying-bitmaps/manage-memory.html。如果api级别>10,我认为我们不需要调用recycle。

    参考这个链接...它提供了如何一步一步实现的所有细节和代码示例。

    https://developer.android.com/training/displaying-bitmaps/manage-memory.html

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      在您的具体示例(第一个示例)中,您实际上并没有重用源代码,您只是覆盖了 bm 的值,使其指向新的位图,在这种情况下,您不能再调用 recycle在源位图上,因为您不再有对它的引用。

      我建议使用第二种方法来确保源位图被回收。

      【讨论】:

        猜你喜欢
        • 2014-09-13
        • 1970-01-01
        • 2011-12-22
        • 2021-08-09
        • 1970-01-01
        • 2012-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多