免责声明:我阅读了大约 20 个现有问题。不幸的是,他们都没有解决我的问题。
我有一个 Activity 。此 Activity 从全局/静态类 C 获取位图并将位图设置为 ImageView
。当 Activity 结束并且我尝试重新打开 Activity 时,我得到了 java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
异常。我在任何时候都不调用 Bitmap.recycle()
。另外,我没有删除 C 类中的位图引用。我尝试了以下方法,但它们没有用:
- 调用
ImageView.setDrawingCacheEnabled(false)
- 在为
ImageView
设置位图之前,进行深拷贝(通过Bitmap.copy()
方法)
此外,我在整个 Activity 生命周期中放置了一些日志语句。在 onDestroy()
中,在调用 super.onDestroy()
之前,我检查并确保位图没有被回收(通过 Bitmap.isRecycled()
)
我该如何解决这个问题?
最佳答案
罪魁祸首原来是 RemoteControlClient.MetadataEditor.apply()
,它确实为传递给它的位图调用了 recycle()
。
关于Android位图回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22693781/