2013-07-02 54 views
0

我试过在我的代码中的回收方法,但它似乎没有正常工作。我有一个viewpager在我的应用程序的开始,它已经有5个图像在里面,我用位图回收以回收它位图回收();显示错误和图像不显示

 Bitmap tempImage = ImageSampleManager.decodeSampledBitmapFromResource(getResources(),tutorial_images[position], 240, 240); 
     view.setImageBitmap(tempImage); 
     ((ViewPager) collection).addView(view, 0); 
     tempImage.recycle(); 
     return view; 
    } 
+3

'它不工作properly' - 可能是最无用的语句编程。 *确切*你得到什么错误,你什么时候得到它,请从logcat发布堆栈跟踪。 – Simon

+1

No no n。您在使用时无法回收Bitmap。回收可以从内存中释放位图 – Blackbelt

+0

也许你太早调用tempImage.recycle():图像仍然被视图使用,所以试图回收它将会失败。尽可能在onDestroy()中调用它。此外,将很高兴向我们展示一些日志。 –

回答

0

您可以避免创建一个stackoverflow主题并通过阅读文档等待答案。
Bitmap.recycle()用于通知系统您不再使用该位图并且可以从内存中释放该位图。
因此,如果您先回收它,那么您无法显示它。

-1

你必须检查:

Bitmap tempImage; 
    if (tempImage != null && !tempImage .isRecycled()) { 
       tempImage = null; 
    } 
    tempImage = ImageSampleManager.decodeSampledBitmapFromResource(getResources(),tutorial_images[position], 240, 240); 
    view.setImageBitmap(tempImage); 
    ((ViewPager) collection).addView(view, 0); 
    // tempImage.recycle(); 
    return view; 
+0

所以我应该真的做 – user007