在标题为“Managing Bitmap Memory”的文档中,您可以找到以下声明:
警告:只有在确定不再使用位图时才应使用recycle()。如果您调用recycle()并稍后尝试绘制位图,您将收到错误:“Canvas:尝试使用循环位图”。
那么,究竟什么意思是“不再”?
我在片段onCreateView(...)方法中调用setImageDrawable(drawable)
。我在片段的onStop()上的drawable的位图上调用recycle()
。
当用户现在通过启动另一个活动而离开片段时,位图被回收。但是当用户回到上一个片段时,它的onCreateView()会再次被调用,从而导致对“setImageDrawable(drawable)”的新调用。这引发了:
IllegalArgumentException: Cannot draw recycled bitmaps
所以,我似乎仍处于“不再”的背景下。我什么时候可以获得一个新的位图,这个位图不会被回收?只有在碎片及其活动完全被破坏后?
答案 0 :(得分:1)
那么,究竟什么意思是“不再”?
不再意味着您不会使用相同的Bitmap引用。
正如您所说,在onstop()上回收位图,请在onStop()中尝试使用此位图
if(bitmap!=null)
{
bitmap.recycle();
bitmap=null;
}
Bitmap and outOfMemory in android
如果您想让自己的日子变得美好,请观看此官方视频的前20分钟 - http://www.youtube.com/watch?v=_CruQY55HOk