描述
定义LruCache:
LruCache cache = new LruCache<String, List<?>>(maxSize){
@Override
protected int sizeOf(String key, List<?> value){
return EmptyUtil.isEmpty(value) ? 1 : value.size();
}
}
但是在清空缓存的调用cache.evictAll()
的时候偶尔会报错,
new IllegalStateException(cache.sizeOf() is reporting inconsistent results!);
即 LruCache中自己维护的size 和实际存储数据map的size,无法对应。
原因:
我们缓存的list中数据存在可用行,我们偶尔会对list中数据进行清理,假如数据entry已经是不可用状态,将会移除这个数据。
List<?> list = cache.get(key)