我遇到了位图回收问题。我在pulltorefreshlistview中显示位图。我有大约30-50个图像下载以及来自webservice函数的一些文本。我正在使用延迟加载图像和下载图像并将其解码为80x80大小。我的问题是我得到OutOfmemoryError。所以我做了一些R和D,并且知道位图不是立即GC的。所以我想做回收()位图来回收内存。在位图上调用recycle()的位置。我正在使用着名的lazylist。在下面的代码设置位图后,我试着做bitmap.recycle()。我没有像stackoverflow上报告的其他任何错误,但奇怪的是listitems显示为空白。我想知道如果我循环()位图为什么textviews,在同一行受影响。由于有很多图像我的应用程序很快崩溃。我还想问一下如何一次回收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);
}
}
答案 0 :(得分:0)
我们使用此库:Android HttpImageManager
使用列表很容易,我从来没有使用它的OutOfMemoryException。它将位图缓存在内存中以及文件系统中(您可以更改该行为)。
另外我建议您不要在手机上调整位图大小,但如果可以,请在服务器上远程调整位图(当然您可能没有这个选项)。