【问题标题】:How to make Android not to recycle my Bitmap until I don't need it?如何让 Android 在我不需要它之前不回收我的位图?
【发布时间】:2012-06-15 20:38:23
【问题描述】:

我正在获取视图的绘图缓存,它被设置为 Activity 的 contentView。然后我为活动设置新的内容视图并将该绘图缓存传递给它。但是 Android 回收了我的位图,我得到了这个异常:

06-13 01:58:04.132: E/AndroidRuntime(15106): java.lang.RuntimeException: Canvas: 试图使用回收的位图 android.graphics.Bitmap@40e72dd8

有什么办法解决吗?我有一个扩展 Bitmap 类的想法,但它是最终的。为什么 GC 会回收它?

【问题讨论】:

    标签: android bitmap garbage-collection


    【解决方案1】:

    位图被回收并不意味着它被垃圾收集,它意味着Bitmap.recycle()被故意调用。我不熟悉具体的代码,但我很确定当你用新的东西调用setContentView() 时,它会破坏以前的视图(因为它假设你不再想要它们了)。它似乎击中了ImageView,并在其位图上调用recycle() 成为一个好公民,然后给你你的错误。我的猜测是不支持您尝试执行的操作。

    【讨论】:

      【解决方案2】:

      问题解决了,我只是将位图克隆到新的。我认为,发生异常是因为缓存视图与它的绘图缓存一起被删除。

      【讨论】:

        猜你喜欢
        • 2015-03-02
        • 2012-09-14
        • 2021-12-15
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        相关资源
        最近更新 更多