android - 如何让 Android 在我不需要之前不回收我的位图?

标签 android bitmap garbage-collection

我正在获取 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/

相关文章:

android - 从 Canvas 上的单个位图绘制多次

javascript - 为什么未分配的 Vue 实例不会被垃圾回收?

具有数据结构(字典、列表等)的 C# .NET 内存管理

android - Firebase Crashlytics SDK 无法识别 Crashlytics 类

android - 如何在android系统状态栏中显示文字

Android 单元测试,说我在类里面没有测试,虽然我有 1

bitmap - SFML加载、修改、显示位图

image - VB6可以将图像保存为JPEG吗?

go - 收集实时 GC 指标 - Golang

android - key 工具错误 : java. lang.ClassNotFoundException : org. bouncycaSTLe.jce.provider.BouncyCaSTLeProvider