2

我有一个使用 Robospice 和 Jackson + Spring 的 android 应用程序来执行 REST 请求。这是有效的,除了 Robospice 似乎没有缓存响应。我还确保请求之间的缓存键是一致的。

我正在像这样设置 SpiceManager:

 private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class);

然后,我正在执行这样的请求:

mRestManager.execute(customSpiceRequest, requestCacheKey, 
            DurationInMillis.ALWAYS, new CustomRequestListener())

我不知道它是否相关,但我的 customSpiceRequest 扩展了 SpringAndroidSpiceRequest。我已经确定 requestCacheKey 在请求之间也是相同的。

我还需要做些什么来启用请求之间的缓存吗?

4

1 回答 1

6

事实上,RoboSpice 正在做您要求的事情:您将 DurationInMillis.ALWAYS 作为参数传递给执行。

这意味着缓存中的数据将始终被视为过期。因此,SpiceRequest 将始终执行网络调用。调用执行时,您应该只使用不同的 cacheDuration 值。

从那时起,Javadoc 得到了增强:

  • cacheExpiryDuration :缓存内容将被视为过期的持续时间(以毫秒为单位)。例如 DurationInMillis.ALWAYS 意味着缓存中的数据将始终被视为过期,因此请求将始终执行其网络操作以获取新数据。DurationInMillis.NEVER 意味着数据永远不会被认为是过期的,请求永远不会执行网络操作来刷新数据,但总是会返回缓存的数据。(见 {@link DurationInMillis})。*
于 2013-02-03T10:06:09.253 回答