0

次のコードは、グリッドビューに表示する目的ですべての写真を取得するために使用されました。ただし、1000枚の写真があると、メモリ不足エラーになります。これを手伝ってくれる人はいますか?

PS誰かができれば、遅延読み込みとキャッシュを利用するために上記の編集されたコードを表示できますか? 私はかなり迷っています。初期化メソッドは、基本的に 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();
    }
4

1 に答える 1

3

多くのメモリを消費するビットマップを大量にロードしているため、メモリが不足しています。簡単な (そして正しい) 答えは、一度にすべてをロードしないことです。代わりに、必要に応じて各イメージをアダプターにロードする必要があります。

于 2013-01-28T19:53:07.663 に答える