在我不需要之前,如何让Android不回收我的Bitmap?

时间:2012-06-12 22:02:41

标签: android bitmap garbage-collection

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

  

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

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

2 个答案:

答案 0 :(得分:2)

回收的位图并不意味着它是Garbage Collected,这意味着有意在它上面调用Bitmap.recycle()。我不熟悉具体的代码,但我很确定当你用新的东西调用setContentView()时,它会拆掉之前的视图(因为它假设你不再需要它们了)。它似乎正在点击ImageView并在其位图上调用recycle()成为一个好公民,然后会给你错误。我的猜测是你不想支持的。

答案 1 :(得分:1)

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