检查位图是否被回收无助于解决"RuntimeException: Canvas: trying to use a recycled bitmap"
Checking if bitmap is recycled doesn't help to solve "RuntimeException: Canvas: trying to use a recycled bitmap"
我从服务向我的 activity 发送位图(使用 LocalBroadcastManager
和额外的意图位图)
我在 activity 中将它们设置为 ImageView
,如下所示:
if (!bitmap.isRecycled) {
imageView.setImageBitmap(bitmap)
}
当我不再需要该服务时,我将其关闭并释放保留在该服务中的位图对象
但是当我关闭服务时,通常会出现以下错误:
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896
所以bitmap.isRecycled
条件在这里没有帮助
有什么安全的方法可以将Bitmap设置为ImageView吗?
你的异常告诉你位图已经被回收所以不需要应用程序检查
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896
而是检查空值
同时检查文档,了解您出错的原因
https://developer.android.com/reference/android/graphics/Bitmap#isRecycled()
当您使用 imageView.setImageBitmap(bitmap)
时,您不应在 setImageBitmap
之后回收位图,因为您的 imageView 仍在引用和使用该位图。 activity/fragment/view销毁后可以回收
我从服务向我的 activity 发送位图(使用 LocalBroadcastManager
和额外的意图位图)
我在 activity 中将它们设置为 ImageView
,如下所示:
if (!bitmap.isRecycled) {
imageView.setImageBitmap(bitmap)
}
当我不再需要该服务时,我将其关闭并释放保留在该服务中的位图对象
但是当我关闭服务时,通常会出现以下错误:
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896
所以bitmap.isRecycled
条件在这里没有帮助
有什么安全的方法可以将Bitmap设置为ImageView吗?
你的异常告诉你位图已经被回收所以不需要应用程序检查
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@fc4b896
而是检查空值
同时检查文档,了解您出错的原因
https://developer.android.com/reference/android/graphics/Bitmap#isRecycled()
当您使用 imageView.setImageBitmap(bitmap)
时,您不应在 setImageBitmap
之后回收位图,因为您的 imageView 仍在引用和使用该位图。 activity/fragment/view销毁后可以回收