从相机加载缩略图的最快方法

时间:2013-05-02 20:45:23

标签: android performance bitmap

我正在尝试实现一个图库,我有一个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的原生图库应用之间的加载时间时,我发现图库应用加载缩略图比我的应用程序快很多,同时具有比我的Thumbnails.MICRO_KIND更好的图像质量。加载缩略图比使用MediaStore.Images.Thumbnails.getThumbnail()函数有更快的方法吗?因为很明显,图库应用程序加载缩略图的速度要快得多。

注意:这是应用程序最初打开时,缓存开始之前。我的缓存存储图像后,加载时间接近即时。所以,不是缓存问题。

编辑: 我以为我应该澄清一下。这不是我的UI被锁定或我的应用程序很慢,因为我已经使用AsyncTask从UI线程读取我的图像。我问的是,函数MediaStore.Images.Thumbnails.getThumbnail()是否是加载已存储在手机上的缩略图的最快方式?

1 个答案:

答案 0 :(得分:1)

使用Universal Image Loader它会解决您的问题,这些问题很可能源于您加载错误的尺寸和/或不缓存结果。