使用Jackson和Spring在Robospice中启用REST请求的缓存

时间:2013-01-30 20:42:31

标签: android jackson robospice

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

我正在设置SpiceManager:

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

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

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

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

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

1 个答案:

答案 0 :(得分:6)

事实上,RoboSpice正在做你想要的:你通过 DurationInMillis.ALWAYS作为要执行的参数。

这意味着数据 在缓存中始终被视为已过期。因此,SpiceRequest会 始终执行网络呼叫。你应该使用不同的 调用execute时的cacheDuration值。

此后,Javadoc得到了增强:

  • cacheExpiryDuration:持续时间(以毫秒为单位),之后缓存的内容将被视为已过期。例如,DurationInMillis.ALWAYS意味着缓存中的数据将始终被视为过期,因此请求将始终执行其网络操作以获取新数据。 DurationInMillis.NEVER表示数据永远不会被视为过期,请求永远不会执行网络操作来刷新数据,但始终会返回缓存数据。 (参见{@link DurationInMillis})。*