为什么图像在从android中的服务器加载时花费太多时间延迟?

时间:2017-03-02 05:47:10

标签: android

我正面临一些关于图像加载的问题。我使用图像加载器从服务器加载图像,但加载图像需要太多的时间延迟。 这是我的imageload代码:

初始化DisplayImageOptions。

options = new DisplayImageOptions.Builder().cacheInMemory(true)
            .cacheOnDisc(true).resetViewBeforeLoading(true)
            .showImageForEmptyUri(R.drawable.user_icon)
            .showImageOnFail(R.drawable.user_icon)
            .showImageOnLoading(R.drawable.loading).build();

加载图片:

ImageLoader.getInstance().displayImage(base64Image, holder.profile_image, options);

1 个答案:

答案 0 :(得分:3)

删除方法resetVideBeforeLoading。检查我通常申请的样本:

// Create a public utility class

public static ImageLoaderConfiguration getConfig(Context context) {
    return new ImageLoaderConfiguration.Builder(context)
            .memoryCacheExtraOptions(480, 800)
            .diskCacheExtraOptions(480, 800, null)
            .threadPriority(Thread.NORM_PRIORITY - 2)
            .tasksProcessingOrder(QueueProcessingType.FIFO)
            .denyCacheImageMultipleSizesInMemory()
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .diskCache(new UnlimitedDiskCache(context.getCacheDir()))
            .diskCacheSize(50 * 1024 * 1024)
            .diskCacheFileCount(100)
            .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
            .imageDownloader(new BaseImageDownloader(context))
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
            .build();
}

public static DisplayImageOptions getOptions() {
    return new DisplayImageOptions.Builder()
            .resetViewBeforeLoading(true)
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(false) // Default
            .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // Default
            .bitmapConfig(Bitmap.Config.ARGB_8888) // Default
            .displayer(new SimpleBitmapDisplayer()) // Default
            .handler(new Handler()) // Default
            .build();
}

使用:

ImageLoader.getInstance().init(Utils.getConfig(context));
ImageLoader.getInstance().displayImage(
    imageUrl,
    mImageView,
    Utils.getOptions(), new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String s, View view) {
            // Show loader
        }

        @Override
        public void onLoadingFailed(String s, View view, FailReason failReason) {
            // Show error message
        }

        @Override
        public void onLoadingComplete(String s, View view, Bitmap bitmap) {

            // Hide loader
        }

        @Override
        public void onLoadingCancelled(String s, View view) {

        }
    });