我正在使用"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);
答案 0 :(得分:1)
将默认内存缓存设置为false(因此不要使用.cacheInMemory(true)
)时,缓存似乎将自己保持在设置的最大值。计算出的缓存可能是盘上缓存和内存缓存的组合。
这确实使得Android操作系统中的“缓存”数量不太可用,但另一方面,它有点公平。由于看起来数字排成一行,所以只需设置两个最大值,并将其传达给用户。