2

在标题为“管理位图内存”的文档中,您可以找到以下语句:

注意:只有在确定不再使用位图时才应使用 recycle()。如果您调用 recycle() 并稍后尝试绘制位图,您将收到错误:“画布:尝试使用回收的位图”。

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

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

IllegalArgumentException: Cannot draw recycled bitmaps

所以,我似乎仍然处于“不再”的环境中。我什么时候可以得到一个没有被回收的新位图?只有在片段及其活动被完全破坏之后?

4

1 回答 1

2

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

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

正如您所说,您正在 onstop() 上回收位图,请在 onStop() 中尝试使用此功能

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

Android中的位图和outOfMemory

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

于 2013-08-30T06:44:50.993 回答