Bitmap.recycle() - “IllegalArgumentException:无法绘制回收的位图”

时间:2013-08-28 14:35:09

标签: android memory bitmap recycle

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

  

警告:只有在确定不再使用位图时才应使用recycle()。如果您调用recycle()并稍后尝试绘制位图,您将收到错误:“Canvas:尝试使用循环位图”。

那么,究竟什么意思是“不再”?

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

IllegalArgumentException: Cannot draw recycled bitmaps

所以,我似乎仍处于“不再”的背景下。我什么时候可以获得一个新的位图,这个位图不会被回收?只有在碎片及其活动完全被破坏后?

1 个答案:

答案 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