如何为android通用图像加载器正确配置有限的缓存?

时间:2014-01-18 11:24:09

标签: android caching universal-image-loader

我正在使用"Android universal image loader library (v 1.9.1)",我试图通过在配置构建器中使用此行来限制正在使用的(光盘)缓存量:

.discCache(new TotalSizeLimitedDiscCache(cacheDir, 25 * 1024 * 1024))

我可能在这里做了一些非常愚蠢的事情,但这应该将我的缓存限制为25MB,当我查看当前的应用信息时,我已经在45+ MB,所以它似乎没有工作。

我错过了什么吗?

添加怀疑:如果缓存号还包含设置为true的'memorycache'怎么办?我假设这只是一个缓存,就imageLoader而言,从应用程序/ os的角度来看,只是另一个使用内存的东西。如果不是,它可以解释数字?

初始化的完整代码:

private void initImageLoader() {
    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
        .cacheInMemory(true)
        .cacheOnDisc(true)
        .build();    

     File cacheDir = StorageUtils.getCacheDirectory(getApplicationContext());
     cacheDir.mkdirs(); 


    ImageLoaderConfiguration config = new 
        ImageLoaderConfiguration.Builder(getApplicationContext())
        .defaultDisplayImageOptions(defaultOptions)
        .discCache(new TotalSizeLimitedDiscCache(cacheDir, 25 * 1024 * 1024))
        .build();

    ImageLoader.getInstance().init(config);             
}

用于调用代码(在imageUrl中显示imageView

ImageLoader.getInstance().displayImage(imageUrl, imageView); 

1 个答案:

答案 0 :(得分:1)

将默认内存缓存设置为false(因此不要使用.cacheInMemory(true))时,缓存似乎将自己保持在设置的最大值。计算出的缓存可能是盘上缓存和内存缓存的组合。

这确实使得Android操作系统中的“缓存”数量不太可用,但另一方面,它有点公平。由于看起来数字排成一行,所以只需设置两个最大值,并将其传达给用户。