【问题标题】:UIL OutOfMemoryUIL 内存不足
【发布时间】:2016-07-28 06:23:01
【问题描述】:

我在我的应用程序中使用以下配置。我们有很多列表屏幕,我们使用智能适配器通过 UIL 加载图像。我正在使用以下代码进行 UIL 配置。我们在崩溃日志中得到了很多 OutOfMemoryError。请告诉我配置有什么问题

private static final int MB = 1024 * 1024;
private static final int MEMORY_CACHE_SIZE = (int) 1.5 * MB;
private static final int DISK_CACHE_SIZE = 15 * MB;

private com.nostra13.universalimageloader.core.ImageLoader imageLoader;

public UniversalImageLoader(Context context)
{
    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
    File cacheDir = StorageUtils.getCacheDirectory(context);
    ImageLoaderConfiguration.Builder configBuilder = new ImageLoaderConfiguration.Builder(context);
    configBuilder.threadPriority(1);
    if(BuildConfig.DEBUG)
    {
        configBuilder.writeDebugLogs();
    }
    configBuilder.denyCacheImageMultipleSizesInMemory();
    configBuilder.defaultDisplayImageOptions(defaultOptions);
    configBuilder.memoryCache(new LruMemoryCache(MEMORY_CACHE_SIZE));
    try
    {
        configBuilder.diskCache(new LruDiskCache(cacheDir, new HashCodeFileNameGenerator(), DISK_CACHE_SIZE));
    }
    catch(IOException e)
    {
        configBuilder.diskCacheSize(DISK_CACHE_SIZE);
    }

    imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
    imageLoader.init(configBuilder.build());
    imageLoader.handleSlowNetwork(true);
}

【问题讨论】:

  • edit显示异常发生位置的logcat

标签: android universal-image-loader


【解决方案1】:
public void initImageLoader(Context context) {
    // UNIVERSAL IMAGE LOADER SETUP

    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
            .showImageForEmptyUri(R.mipmap.save)
            .showImageOnFail(R.mipmap.save).resetViewBeforeLoading()
            .cacheOnDisc().imageScaleType(ImageScaleType.EXACTLY)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .displayer(new FadeInBitmapDisplayer(300)).build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
            getApplicationContext())
            .defaultDisplayImageOptions(defaultOptions)
            .memoryCache(new WeakMemoryCache())
            .discCacheSize(100 * 1024 * 1024).build();

    ImageLoader.getInstance().init(config);
    // END - UNIVERSAL IMAGE LOADER SETUP
}

【讨论】:

  • @ZahidNaqvi 在 logcat 出现之前无法弄清楚。
  • 我在开发时没有得到这个。我在面料上得到这个。
  • @ZahidNaqvi 如果您觉得这有帮助,请打勾。
  • 我得到了解决方案 Override lowMemory in the Application class and clear memory cache there.
猜你喜欢
  • 2013-06-17
  • 2014-10-15
  • 2011-05-21
  • 2021-12-20
  • 2021-10-29
  • 1970-01-01
  • 2020-03-12
  • 2015-08-11
  • 2019-06-07
相关资源
最近更新 更多