android - GridView 内存不足错误

标签 android memory gridview image

我使用 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/

相关文章:

javascript - Android 键盘关闭输入焦点

android - 在 BroadcastReceiver 中通知

multithreading - GHC 每线程 GC 策略

c# - 删除 Windows 窗体中的 GridView 行

android - 如何通过adb在android上启动守护进程

android - 如何以编程方式显示所有应用程序的数据使用情况?

c - 我的 c 程序打印 "out of memory"-error 但有很多可用的内存空间

c - 从用户空间访问内核内存(task_struct)

javascript - DataTables 动态添加列到表

html - 是否可以使用一个 flex 元素添加文本层(更多行)?