1

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

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

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

4

2 回答 2

2

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

于 2012-06-12T22:17:35.887 回答
1

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

于 2012-06-12T22:35:12.627 回答