【发布时间】:2013-04-27 04:16:54
【问题描述】:
我正在尝试实现一个画廊,并且我有一个 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() 函数是否是加载已存储在手机上的缩略图的最快方法?
【问题讨论】:
-
this page 上有几个很好的资源可能会对您有所帮助。
标签: android performance bitmap