来自ImageAdaptar GridLayout的getView - OutofMemoryError

时间:2012-11-20 18:43:15

标签: android image out-of-memory grid-layout

我的ImageAdapter出现“内存不足”错误,我尝试了一些重用ImageView的解决方案,但没有用,我希望有人可以帮助我:)

@Override
public View getView(int position, View convertView, ViewGroup parent) {         
    ImageView imageView;
    if (convertView == null) { 
        imageView = new ImageView(mContext);//Creamos la imagen sólo si no existe
    } else {
        imageView = (ImageView) convertView;//Sino reusamos el objeto
    }

    //Todas con el mismo ancho
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(70, 70));

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

我有一些应用程序类似,但不是这个问题,我肯定在这有290个不同的图像,而另一个应用程序我只有一个:),我认为convertView == null修复outOfMemory问题

更多信息: - 只有20张图片的100kb更多,其中只有3张> 500k且<900k

PD:我正在使用本教程代码:http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/

感谢您的帮助,对不起我的英语

1 个答案:

答案 0 :(得分:0)

Android程序比大多数程序复杂得多,图像在Ram中占用的内存比在磁盘上占用的内存要大得多。不然,有一件事你可以轻松做,还有一些其他的提示。

  1. android:largeHeap="true"添加到清单中的应用标记。
  2. 运行某种内存分析器以查找泄漏。
  3. 删除所有未使用的变量。
  4. 如果某些变量在各个类中一致使用,则使其变为静态。
  5. 尝试使用尺寸正确的图片。
  6. 另外,请查看How can I gracefully degrade my performance, given limited memory?