Я пишу пользовательскую галерею, используя библиотеку UIL, и для проверки производительности я модифицировал ImagePagerActivity
(пример кода) для загрузки изображений с SD-карты. Все работает нормально, но загрузка слишком медленная, иногда даже занимает 5 секунд, чтобы загрузить одно изображение. Однако, если я использую встроенную галерею, ее способ быстрее и загружает больше изображений в миллисекундах. Вот фрагмент модифицированного OnCreateУниверсальный загрузчик изображений загружается медленнее
File file = new File(Environment.getExternalStorageDirectory(), "dcim/100MEDIA/");
File[] images = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.toLowerCase(Locale.US).endsWith(".jpg");
}
});
String[] imageUrls = new String[images.length];
for (int a = 0; a < imageUrls.length; a++)
imageUrls[a] = "file://" + images[a].getAbsolutePath();
options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error).resetViewBeforeLoading(true).cacheOnDisc(true)
.cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY).bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options).discCacheExtraOptions(800, 800, CompressFormat.PNG, 0, null)
.build();
ImageLoader.getInstance().init(config);
и немного модифицированный ImagePagerAdapter
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
Toast.makeText(ImagePagerActivity.this, loadedImage.getWidth() + " x " + loadedImage.getHeight(),
Toast.LENGTH_SHORT).show();
}
Обычно общий размер изображения 2592x1552
УИЛ 1.8.6
Android версия: 4.0.3
Другие такие же, как пример кода
Попробуйте отключить кэширование на диске. – NOSTRA
сделал, такой же результат :) – xmen