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

3

我正在使用“Android通用图像加载库(v 1.9.1)”,我想通过在配置生成器中使用以下行来限制所使用的(disc)缓存量:

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

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

我错过了什么吗?

添加怀疑:如果缓存数量也包括设置为true的"memorycache",那会怎样呢?我工作的前提是这只是对imageLoader有影响的缓存,在应用程序/操作系统方面只是使用内存的另一件事。如果不是,这可能可以解释数字?

初始化完整代码:

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);             
}

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

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

测试一下如果不将内存缓存设置为true会发生什么。 - Nanne
1个回答

1
当将默认的内存缓存设置为false(因此不使用.cacheInMemory(true)),缓存似乎保持在设置的最大值。计算出的缓存可能是磁盘缓存和内存缓存的组合。
这确实使得Android操作系统中的“缓存”数字有些难以使用,但另一方面,这也是公平的。由于看起来数字是对齐的,只需要设置两个最大值,并向用户传达这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接