我有一些泄漏问题。 我正在做的是在桌子上加载一些图片。我已经创建了一个用于加载图像的异步类。
在我的桌子上,当我骑自行车时,我添加了我的课程
final LoaderImageView image = new LoaderImageView(getContext(),vgood[i].getImageUrl(),(int)(ratio *80),(int)(ratio *80));
row.addView(image);
在我的asyncronous类中,我正在加载来自此
的图像return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name");
由
调用public void setImageDrawable(final String imageUrl) {
mDrawable = null;
mSpinner.setVisibility(View.VISIBLE);
mImage.setVisibility(View.GONE);
new Thread(){
public void run() {
try {
mDrawable = getDrawableFromUrl(imageUrl);
imageLoadedHandler.sendEmptyMessage(COMPLETE);
} catch (MalformedURLException e) {
imageLoadedHandler.sendEmptyMessage(FAILED);
e.printStackTrace();
} catch (IOException e) {
imageLoadedHandler.sendEmptyMessage(FAILED);
e.printStackTrace();
}
};
}.start();
}
当我有很多图片加载应用程序崩溃时,由于此行导致内存不足
return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name");
我该如何解决?我哪里错了?
谢谢
答案 0 :(得分:0)
永远不要加载任何您不需要的瓷砖。 "我正在从sdcard收集所有位图"建议你解压缩你可能需要的每一张图像,这是错误的做法。
使用较小的瓷砖。 256x256是一个很好的尺寸。
将它们加载为Config.RGB565(即16bpp)。
定期回收()您不需要的位图。
基本上,您需要实现某种最近使用的(MRU)位图缓存
从
提取