我正在绘制视图的缓存,将其设置为Activity的contentView。然后我将新的内容视图设置为活动并将该绘图缓存传递给它。但是Android回收了我的位图,我得到了这个例外:
06-13 01:58:04.132:E / AndroidRuntime(15106):java.lang.RuntimeException:Canvas:尝试使用循环位图android.graphics.Bitmap@40e72dd8
有什么办法解决吗?我有一个扩展Bitmap类的想法,但它是最终的。为什么GC会回收它?
答案 0 :(得分:2)
回收的位图并不意味着它是Garbage Collected,这意味着有意在它上面调用Bitmap.recycle()
。我不熟悉具体的代码,但我很确定当你用新的东西调用setContentView()
时,它会拆掉之前的视图(因为它假设你不再需要它们了)。它似乎正在点击ImageView
并在其位图上调用recycle()
成为一个好公民,然后会给你错误。我的猜测是你不想支持的。
答案 1 :(得分:1)
问题解决了,我只是将位图克隆到新的。我认为,发生异常是因为缓存的视图已被删除了它的绘图缓存。