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

Dav*_*nin 2 android jackson robospice

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

我正在设置像这样的SpiceManager:

 private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class);
Run Code Online (Sandbox Code Playgroud)

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

mRestManager.execute(customSpiceRequest, requestCacheKey, 
            DurationInMillis.ALWAYS, new CustomRequestListener())
Run Code Online (Sandbox Code Playgroud)

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

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

Sni*_*las 6

实际上,RoboSpice正在按照您的要求执行操作:将DurationInMillis.ALWAYS作为要执行的参数传递.

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

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

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