- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在标题为“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/
我是一名优秀的程序员,十分优秀!