我的应用程序中使用Universal Image Loader的OutOfMemoryError

时间:2014-01-08 07:14:17

标签: android image out-of-memory loader universal

你可以帮帮我吗?我在我的应用程序中使用universal-image-loader-1.9.1-with-sources.jar,这个应用程序有太多的图像,这些图像有更大的。 ImageLoaderConfiguration的设置是

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
          .threadPoolSize(3)
          .threadPriority(Thread.NORM_PRIORITY - 2)
          .denyCacheImageMultipleSizesInMemory()
          .memoryCache(new UsingFreqLimitedMemoryCache(30 * 1024 * 1024))
          .discCacheFileCount(100)
          .discCacheSize(50 * 1024 * 1024)
          .discCache(new UnlimitedDiscCache(createCacheDir()))
          .tasksProcessingOrder(QueueProcessingType.LIFO)
          .writeDebugLogs() 
          .build();
    ImageLoader.getInstance().init(config);

  options = new DisplayImageOptions.Builder()
        .showStubImage(R.drawable.default_small) 
        .showImageForEmptyUri(R.drawable.default_small) 
        .showImageOnFail(R.drawable.default_small) 
        .cacheInMemory(true) 
        .cacheOnDisc(true) 
        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
        .bitmapConfig(Config.RGB_565)
        .build();

@Override
public void onBackPressed() {
    AnimateFirstDisplayListener a = new AnimateFirstDisplayListener();
    List<String> list = a.displayedImages;
    for (int i = 0; i < list.size(); i++) {
        MemoryCacheUtil.removeFromCache(list.get(i),imageLoader.getMemoryCache());                                           
    }
    imageLoader.clearMemoryCache();
    imageLoader.clearDiscCache();
    AnimateFirstDisplayListener.clearUrl();
    super.onBackPressed();
}

onbackpress这个方法没用了

1 个答案:

答案 0 :(得分:0)

您是否尝试使用Usefull info section中的信息?

您还应该尝试使用

ImageScaleType.IN_SAMPLE_POWER_OF_2

BitmapFactory会自动将ImageScaleType.IN_SAMPLE_INT向下舍入为2的幂。
在这种情况下,如果UIL库计算所需的比例为3,则图像将仅缩放2,从而导致可能的OOM错误。