Android 通用图像加载程序加载速度较慢

Android 通用图像加载程序加载速度较慢,android,universal-image-loader,Android,Universal Image Loader,我正在使用UIL库编写一个自定义图库,为了测试性能,我修改了示例代码的ImagePagePractivityo以从SD卡加载图像。一切正常,但加载速度太慢,有时甚至需要5秒钟才能加载一张图像。然而,如果我使用内置的画廊,它的方式更快,加载更多的图像在毫秒。下面是modifiedoncreate的代码片段 File file = new File(Environment.getExternalStorageDirectory(), "dcim/100MEDIA/"); File[]

我正在使用UIL库编写一个自定义图库,为了测试性能,我修改了示例代码的ImagePagePractivityo以从SD卡加载图像。一切正常,但加载速度太慢,有时甚至需要5秒钟才能加载一张图像。然而,如果我使用内置的画廊,它的方式更快,加载更多的图像在毫秒。下面是modifiedoncreate的代码片段

    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);
通常常见的图像尺寸为2592x1552

UIL 1.8.6

安卓版本:4.0.3


其他与示例代码相同

您的ImageLoader配置是什么样子的?你设置了什么优先级?另外,ImageScaleType.justice会创建另一个位图,这样会增加加载时间。对于ImageLoader配置,我将threadPriority设置为Thread.MAX_PRIORITY,threadPoolSize设置为5:

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            getApplicationContext()).threadPriority(Thread.MAX_PRIORITY)
            .memoryCacheSize(memoryCacheSize)
            .memoryCache(new WeakMemoryCache())
            .denyCacheImageMultipleSizesInMemory().threadPoolSize(5)
            .discCacheFileNameGenerator(new MyFileNameGenerator())
            .tasksProcessingOrder(QueueProcessingType.LIFO)// .enableLogging()
            .build();

ImageLoaderConfiguration位于问题代码中。我试着用你的配置,20 MB的内存缓存大小和它的更好。但仍然需要3秒钟。您可以缩小图像的比例并将其放入相应的资源文件夹中吗?请尝试禁用光盘上的缓存。
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            getApplicationContext()).threadPriority(Thread.MAX_PRIORITY)
            .memoryCacheSize(memoryCacheSize)
            .memoryCache(new WeakMemoryCache())
            .denyCacheImageMultipleSizesInMemory().threadPoolSize(5)
            .discCacheFileNameGenerator(new MyFileNameGenerator())
            .tasksProcessingOrder(QueueProcessingType.LIFO)// .enableLogging()
            .build();