Guava Android expireAfterWrite问题

时间:2015-02-09 02:42:46

标签: android caching guava

我们正在尝试在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);

我们在使用代码时是否有问题,或者这是一个已知问题?

1 个答案:

答案 0 :(得分:0)

这是正确的行为。

实际上,客户代码在元素过期时并不关心,对吗?客户端代码确实关心最终缓存值是什么。

RemovalListener侧重于被驱逐的东西,而不是WHEN。 JavaDoc RemovalListener.onRemoval()

  

通知侦听器在某个位置发生了删除   过去。

顺便说一下,我建议使用Cache.get()代替Cache.put()

来自Cache.put()的JavaDoc:

  

在使用传统"首选缓存时,首选get(Object,Callable),   返回;否则创建,缓存并返回"图案。