我们正在尝试在Android上使用该库来进行TimedEviction。一旦我们覆盖现有项目,缓存中的项目即将过期。
我们正在构建缓存,如下所示:
private Cache rssiMap;
RemovalListener removalListener = new RemovalListener() {
@Override
public void onRemoval(RemovalNotification removal) {
}
};
rssiMap = CacheBuilder.newBuilder()
.expireAfterWrite(1, TimeUnit.MINUTES)
.removalListener(removalListener)
.build();
rssiMap.put(device, rssi);
我们在使用代码时是否有问题,或者这是一个已知问题?
答案 0 :(得分:0)
这是正确的行为。
实际上,客户代码在元素过期时并不关心,对吗?客户端代码确实关心最终缓存值是什么。
RemovalListener
侧重于被驱逐的东西,而不是WHEN。
JavaDoc RemovalListener.onRemoval()
:
通知侦听器在某个位置发生了删除 过去。
顺便说一下,我建议使用Cache.get()
代替Cache.put()
。
来自Cache.put()
的JavaDoc:
在使用传统"首选缓存时,首选get(Object,Callable), 返回;否则创建,缓存并返回"图案。