我使用 GridView 来显示 MediaStore 中的缩略图。 如果我启动并关闭我的应用程序 2-3 次,它会因以下问题而崩溃 内存错误。 System.gc() 在主 Activity 的 onCreate 中被调用。 如果注释调用 setImageURI 则没有错误。 也许我需要以某种方式明确清除内存? 请帮忙。
public View getView(int position, View convertView, ViewGroup parent){
ImageView i;
if (convertView == null) {
i = new ImageView(activity.getApplicationContext());
i.setLayoutParams(new GridView.LayoutParams(92, 92));
i.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
i = (ImageView) convertView;
}
Uri imageUri = thumbUri(position);
i.setImageURI(imageUri); // <--- no error if this string is commented
return i;
}
最佳答案
我明白了。我的解决方案基于 Francesco 的回答,但 onPause 而不是 onDestroy。
@Override
protected void onPause() {
GridView gridView = (GridView) findViewById(R.id.public_photos);
int count = gridView.getCount();
for (int i = 0; i < count; i++) {
ImageView v = (ImageView) gridView.getChildAt(i);
if (v != null) {
if (v.getDrawable() != null) v.getDrawable().setCallback(null);
}
}
super.onPause();
}
关于android - GridView 内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966547/