2

ギャラリーを実装しようとしていますが、カメラ フォルダーにすべての画像 (サムネイル) を表示する GridView があります。サムネイルを取得するには、基本的に次を使用して ID を取得します。

final String[] PROJECTION =
                new String[] {MediaStore.Images.Media._ID};

Cursor pictureCursor = getActivity().getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, 
                PROJECTION, null, null, MediaStore.Images.Media._ID);

ArrayList<Integer> ids = new ArrayList<Integer>();
int idIndex = pictureCursor.getColumnIndex(MediaStore.Images.Media._ID);

while (pictureCursor.moveToNext()) {

            ids.add(pictureCursor.getInt(idIndex));
}

そして、サムネイルを読むために、私は使用しています

Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(content_resolver, ids.get(position), MediaStore.Images.Thumbnails.MICRO_KIND, null);

http://developer.android.com/training/displaying-bitmaps/load-bitmap.htmlで指定されている AsyncTask で

しかし、自分のアプリと Android のネイティブ ギャラリー アプリの読み込み時間を比較すると、ギャラリー アプリは自分のアプリよりもはるかに高速にサムネイルを読み込むことがわかります。MediaStore.Images.Thumbnails.getThumbnail()関数を使用するよりもサムネイルを読み込む高速な方法はありますか? 明らかに、ギャラリー アプリはサムネイルをはるかに高速に読み込むためです。

注: これは、キャッシュが機能する前に、アプリが最初に開かれたときです。キャッシュが画像を保存した後、読み込み時間はほぼ瞬時です。したがって、キャッシュの問題ではありません。

編集:明確にする必要があると思いました。UI スレッドから画像を読み取るために既に AsyncTask を使用しているため、UI がロックされたり、アプリが遅くなったりするわけではありません。私が求めているのは、この機能MediaStore.Images.Thumbnails.getThumbnail()が既に携帯電話に保存されているサムネイルをロードする最速の方法であるかどうかです。

4

1 に答える 1

1

Universal Image Loaderを使用すると、間違ったサイズをロードしたり、結果をキャッシュしないことが原因である可能性が高い問題に対処できます。

于 2013-05-02T20:57:31.293 に答える