位图的OutOfMemoryError(列表视图)

时间:2014-02-13 09:18:27

标签: android github bitmap

由于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。我也实现了这些方法,但它仍然无法站起来。

我可以使用带有列表视图的片段来避免此内存问题吗?或者,我错过了什么吗?任何帮助将非常感激。提前致谢。

2 个答案:

答案 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;
}