gpt4 book ai didi

android - 位图.recycle() - "IllegalArgumentException: Cannot draw recycled bitmaps"

转载 作者:行者123 更新时间:2023-11-29 00:27:08 26 4
gpt4 key购买 nike

在标题为“Managing Bitmap Memory”的文档中,您可以找到以下声明:

Caution: You should use recycle() only when you are sure that the bitmap is no longer being used. If you call recycle() and later attempt to draw the bitmap, you will get the error: "Canvas: trying to use a recycled bitmap".

那么,“不再”到底是什么意思?

我在我的 fragment onCreateView(...) 方法中调用了 setImageDrawable(drawable)。我在 fragment 的 onStop() 中对可绘制对象的位图调用 recycle()。当用户现在通过启动另一个 Activity 离开 fragment 时,位图将被回收。但是当用户返回到前一个 fragment 时,它的 onCreateView() 会再次被调用,从而导致对“setImageDrawable(drawable)”的新调用。这会引发:

IllegalArgumentException: Cannot draw recycled bitmaps

所以,我似乎仍然处于“不再”的语境中。我什么时候可以获得未回收的新位图?只有在 fragment 及其 Activity 被完全销毁之后?

最佳答案

So, what exactly means "no longer"?

不再意味着您不会使用相同的位图引用。

正如您所说的,您正在 onstop() 上回收位图,也请在您的 onStop() 中尝试使用它

   if(bitmap!=null)
{
bitmap.recycle();
bitmap=null;
}

Bitmap and outOfMemory in android

如果您想让自己的一天过得愉快,请观看此官方视频的前 20 分钟 - http://www.youtube.com/watch?v=_CruQY55HOk

关于android - 位图.recycle() - "IllegalArgumentException: Cannot draw recycled bitmaps",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com