我正在获取 View 的绘图缓存,即设置为 Activity 的 contentView。然后我为 Activity 设置新的内容 View 并将绘图缓存传递给它。但是 Android 回收了我的位图,我得到了这个异常:
06-13 01:58:04.132: E/AndroidRuntime(15106): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40e72dd8
有什么办法可以解决吗?我有一个扩展 Bitmap 类的想法,但它是最终的。为什么GC要回收它?
最佳答案
被回收的位图并不意味着它是垃圾收集器,它意味着 Bitmap.recycle()
是有意调用的。我不熟悉具体的代码,但我很确定当你用新的东西调用 setContentView()
时,它会破坏以前的 View (因为它假设你不想要他们了)。它似乎正在点击一个 ImageView
并在其 Bitmap 上调用 recycle()
成为一个好公民,然后给你你的错误。我的猜测是不支持您尝试执行的操作。
关于android - 如何让 Android 在我不需要之前不回收我的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005548/