由于Bitmap,我已经阅读了很多关于android内存的内容,并采取了各种措施来防止它,但它仍然无休止地敲门。这是我的代码:
代码:
in = httpConn.getInputStream();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable=true;
options.inJustDecodeBounds = true;
options.inSampleSize = 1;
options.inJustDecodeBounds = false;
image = BitmapFactory.decodeStream(in, null, options);
我可以加载大约15张尺寸为640 * 640的图像。之后它会在log cat中抛出一个OutOfMemoryError。我还为“PullToRefresh”功能实现了一个外部库(来自GitHub)。显然,这涉及自定义列表视图。有没有办法避免这个内存问题。
注意:我已阅读this。我也实现了这些方法,但它仍然无法站起来。
我可以使用带有列表视图的片段来避免此内存问题吗?或者,我错过了什么吗?任何帮助将非常感激。提前致谢。
答案 0 :(得分:0)
只需将options.inSampleSize = 1;
更改为options.inSampleSize = 4;
并且还
bitmap.reCycle();
答案 1 :(得分:0)
嗯,现在来自互联网的图像加载时间有很多解决方案。您也可以使用此库“Android-Query”https://code.google.com/p/android-query/wiki/ImageLoading。它将为您提供所有必需的活动。确定您想要做什么?并阅读图书馆维基页面。并解决图像加载限制问题。
这是我的代码: -
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
ImageView imageview = (ImageView) v.findViewById(R.id.icon);
AQuery aq = new AQuery(convertView);
String imageUrl = "http://www.vikispot.com/z/images/vikispot/android-w.png";
aq.id(imageview).progress(this).image(imageUrl, true, true, 0, 0, new BitmapAjaxCallback(){
@Override
public void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status){
iv.setImageBitmap(bm);
}
});
}
return v;
}