我遇到了位图回收的问题。我在一个下拉刷新列表视图中显示位图。我需要从 WebService 函数下载大约 30-50 张图片以及一些文本。我正在使用图片的懒加载,将它们下载并解码为 80x80 的大小。我的问题是,我会遇到 OutOfMemoryError。因此,我进行了一些研究发现,位图不会立即被 GC。所以,我想要对位图进行 recycle() 操作来释放内存。在哪里调用位图的 recycle() 方法?我正在使用著名的 lazylist。在下面的代码设置完位图后,我尝试执行 bitmap.recycle()。我没有像其他人在 stackoverflow 上报告的那样出现任何错误,但奇怪的是列表项显示为空白。我在想如果我调用了 recycle() 方法,为什么同一行中的文本视图也被影响了。由于图片数量很多,我的应用程序很快就会崩溃。我还想问一下如何一次性回收 ListView 中设置的所有图片。请有人帮帮我。
//Used to display bitmap in the UI thread
class BitmapDisplayer implements Runnable
{
Bitmap bitmap;
PhotoToLoad photoToLoad;
public BitmapDisplayer(Bitmap b, PhotoToLoad p){bitmap=b;photoToLoad=p;}
public void run()
{
if(imageViewReused(photoToLoad))
return;
if(bitmap!=null)
photoToLoad.imageView.setImageBitmap(bitmap);
else
photoToLoad.imageView.setImageResource(stub_id);
}
}