Android Universal Image Loader - how do I set the specs correctly?

OriginalUtter picture OriginalUtter · Mar 20, 2013 · Viewed 8k times · Source

I have an app that loads a lot of big images remotely. When I use nostra's Universal Image Loader (https://github.com/nostra13/Android-Universal-Image-Loader) I often get Out Of Memory errors. I don't know how I should set up the imageloader to prevent this.

This is my current ImageLoader specs:

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .enableLogging()
        .memoryCache(new WeakMemoryCache())
        .build(); 

this.imgDispOpts = new DisplayImageOptions.Builder()
        .cacheInMemory() 
        .cacheOnDisc() 
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
        .build();

this.imageLoader = ImageLoader.getInstance();
this.imageLoader.init(config);

And yes, I pass imgDispOpts when calling displayImage().

Answer

nostra13 picture nostra13 · Mar 20, 2013

Try not cache in memory, use EXACTLY scale type and RGB_565 for bitmap decoding.

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
    .enableLogging()
    .build(); 

this.imgDispOpts = new DisplayImageOptions.Builder() 
    .cacheOnDisc() 
    .imageScaleType(ImageScaleType.EXACTLY) 
    .bitmapConfig(Bitmap.Config.RGB_565)
    .build();