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



我试图实现一个画廊,我有一个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()是最快的方式来加载缩略图已经存储在手机上?

使用通用图像加载器它照顾你的问题,最有可能源于你加载错误的大小和/或没有缓存的结果。

最新更新