【问题标题】:How can I correctly configure limited cache for the android universal image loader?如何为 android 通用图像加载器正确配置有限缓存?
【发布时间】:2014-02-07 19:37:09
【问题描述】:

我正在使用"Android universal image loader library (v 1.9.1)",并且我正在尝试通过在配置生成器中使用此行来限制正在使用的(磁盘)缓存数量:

.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 的情况下测试会发生什么。

标签: android caching universal-image-loader


【解决方案1】:

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

这确实使 Android 操作系统中的“缓存”数字不太可用,但另一方面,这还算公平。看起来数字正在排列,只需设置两个最大值并将其传达给用户即可。

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 2014-01-14
    • 2023-03-18
    • 2014-10-14
    • 2013-05-02
    • 2016-12-15
    • 2015-06-20
    • 2015-04-02
    • 2014-11-16
    相关资源
    最近更新 更多