0

Firstly my static config file is like that:

public static DisplayImageOptions getDisplayImageOptions(){
    options = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.mipmap.ic_empty)
            .showImageOnFail(R.mipmap.ic_error)
            .resetViewBeforeLoading(true)
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .imageScaleType(ImageScaleType.EXACTLY)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .considerExifParams(true)
            .displayer(new FadeInBitmapDisplayer(300))
            .build();
    return options;
}

public static ImageLoaderConfiguration getImageLoaderConfiguration(Context context){
    config = new ImageLoaderConfiguration.Builder(context)
            .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
            .diskCacheExtraOptions(480, 800, null)
            .threadPriority(Thread.NORM_PRIORITY - 2) // default
            .tasksProcessingOrder(QueueProcessingType.FIFO) // default
            .denyCacheImageMultipleSizesInMemory()
            .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
            .memoryCacheSize(2 * 1024 * 1024)
            .memoryCacheSizePercentage(13) // default
            .diskCacheSize(50 * 1024 * 1024)
            .diskCacheFileCount(100)
            .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
            .writeDebugLogs()
            .build();

    return config;
}

My server includes image called: example.jpg When I call from my android application there isn't any problem. But if I change this image with another image and its name is the same(example.jpg), when I call this image again ,my android application gets old(cached) image.

I think imageLoader must understand cached image and server image are different even if they have the same name. But I cannot figure it out.

How can I fix it ?

    imageLoader = ImageLoader.getInstance();
    ImageLoaderConfiguration config = ConfigFile.getImageLoaderConfiguration(getActivity());
    ImageLoader.getInstance().init(config);

    imageLoader.displayImage(newImageUrl, editProfileImageView, ConfigFile.getDisplayImageOptions(), new ImageLoadingListener() {
        @Override
        public void onLoadingStarted(String imageUri, View view) {

        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

        }

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

        }
    }, new ImageLoadingProgressListener() {
        @Override
        public void onProgressUpdate(String imageUri, View view, int current, int total) {

        }
    });

1 Answers1

0

Set cacheOnDisk(false) and cacheInMemory(false) in DisplayImageOptions configuration for loading such dynamic nature of images.

Eg:

imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration config = ConfigFile.getImageLoaderConfiguration(getActivity());
ImageLoader.getInstance().init(config);

DisplayImageOptions options = ConfigFile.getDisplayImageOptions();
options.cacheOnDisk(false);
options.cacheInMemory(false);



imageLoader.displayImage(newImageUrl, editProfileImageView, options, new ImageLoadingListener() {
    @Override
    public void onLoadingStarted(String imageUri, View view) {

    }

    @Override
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) {

    }

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

    }

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

    }
}, new ImageLoadingProgressListener() {
    @Override
    public void onProgressUpdate(String imageUri, View view, int current, int total) {

    }
});
Harish Sridharan
  • 1,070
  • 6
  • 10
  • I want to cache image. You disabled cache mechanism. I think imageLoader must understand cached image and server image are different even if they have the same name. But I cannot figure it out. – Arahan Coder Feb 20 '16 at 19:45
  • It possibly cant. You have to clear the cache whenever new image have been loaded into your server. I would suggest you to have a lastupdated flag along with your image and clear the image when the flag value differs. – Harish Sridharan Feb 21 '16 at 05:30