我通过服务将位图发送到我的活动(额外使用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?
答案 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仍在引用和使用该位图。您可以在活动/片段/视图被破坏时回收它。