【问题标题】:Out of memory error due to large number of image thumbnails to display由于要显示大量图像缩略图而导致内存不足错误
【发布时间】:2013-01-28 19:48:25
【问题描述】:

以下代码用于检索所有照片,以便在 gridview 上显示。但是,如果我有 1000 张照片,则会导致内存不足错误。有没有人可以帮忙解决这个问题?

附:如果有人可以,您是否能够显示上面的编辑代码以使用延迟加载和缓存?我很迷茫。初始化方法主要用于设置gridview将使用的ImageAdapter

谢谢!!

    public void initialize() {
        images.clear();
        final String[] columns = { MediaStore.Images.Thumbnails._ID };
        final String orderBy = MediaStore.Images.Media._ID;
        @SuppressWarnings("deprecation")
        Cursor imagecursor = managedQuery(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
                 null, null, orderBy);

        if(imagecursor != null){
            int image_column_index = imagecursor
                    .getColumnIndex(MediaStore.Images.Media._ID);
            int count = imagecursor.getCount();
            for (int i = 0; i < count; i++) {
                imagecursor.moveToPosition(i);
                int id = imagecursor.getInt(image_column_index);
                ImageItem imageItem = new ImageItem();
                imageItem.id = id;
                lastId = id;
                imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(
                        getApplicationContext().getContentResolver(), id,
                        MediaStore.Images.Thumbnails.MICRO_KIND, null);
                images.add(imageItem);
            }
            //imagecursor.close();
        }
        notifyDataSetChanged();
    }

【问题讨论】:

  • 包含 1000 张图像的单个视图似乎...无法使用。为什么要一次显示这么多图片?
  • 一开始需要加载所有图片,还是动态加载?例如,如果您在屏幕上显示 4 张图像,您可能会加载 12 张(上一屏、当前屏、下一屏)。
  • 如果有人可以,你能展示上面的代码来使用延迟加载和缓存吗?我很迷茫。初始化方法主要用于设置gridview将使用的ImageAdapter。

标签: android performance android-layout android-intent android-ndk


【解决方案1】:

内存不足是因为加载了大量占用大量内存的位图。简单(且正确)的答案是:不要一次全部加载它们。相反,您应该根据需要加载每个图像in the adapter

【讨论】:

  • 在这种情况下最好使用 CursorAdapter。
  • 如果有人可以,你能显示上面的编辑代码以利用延迟加载和缓存吗?我很迷茫。初始化方法主要用于设置gridview将使用的ImageAdapter。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多