2014-01-08 52 views
0

你能帮助我吗?我在我的应用程序中使用了universal-image-loader-1.9.1-with-sources.jar,这个应用程序有太多的图像,这些图像稍微大一些。 ImageLoaderConfiguration的设置是OutOfMemoryError在我的应用程序中使用通用图像加载程序

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这种方法是没有用的

+0

祝您新年快乐,请接受答案 –

回答

0

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

你也应该尝试使用

ImageScaleType.IN_SAMPLE_POWER_OF_2

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

相关问题