检查位图是否被回收并不能解决“ RuntimeException:画布:尝试使用回收的位图”

时间:2019-05-29 07:04:59

标签: android imageview android-imageview android-bitmap

我通过服务将位图发送到我的活动(额外使用LocalBroadcastManager和意图位图)

我在这样的活动中将它们设置为ImageView

if (!bitmap.isRecycled) {
    imageView.setImageBitmap(bitmap)
}

当我不再需要该服务时,我将其关闭并释放该服务中保留的位图对象

但是当我关闭服务时,通常会出现以下错误:

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896

所以bitmap.isRecycled条件对这里没有帮助

是否有安全方法将位图设置为ImageView?

2 个答案:

答案 0 :(得分:1)

您的例外是告诉您位图已被回收,因此无需进行应用检查

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896

相反,只需检查空值

还要查看文档,为什么会出现错误

https://developer.android.com/reference/android/graphics/Bitmap#isRecycled()

答案 1 :(得分:1)

在使用imageView.setImageBitmap(bitmap)时,请勿在{{1​​}}之后回收位图,因为imageView仍在引用和使用该位图。您可以在活动/片段/视图被破坏时回收它。