Android 使用Jackson和Spring在Robospice中为REST请求启用缓存
我有一个android应用程序,使用Robospice和Jackson+Spring来执行REST请求。这是可行的,除了Robospice似乎没有缓存响应。我还确保缓存密钥在请求之间是一致的 我正在这样设置SpiceManager:Android 使用Jackson和Spring在Robospice中为REST请求启用缓存,android,jackson,robospice,Android,Jackson,Robospice,我有一个android应用程序,使用Robospice和Jackson+Spring来执行REST请求。这是可行的,除了Robospice似乎没有缓存响应。我还确保缓存密钥在请求之间是一致的 我正在这样设置SpiceManager: private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class); mRestManager.execute(customSpiceReque
private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class);
mRestManager.execute(customSpiceRequest, requestCacheKey,
DurationInMillis.ALWAYS, new CustomRequestListener())
然后,我像这样执行请求:
private SpiceManager mRestManager = new SpiceManager(JacksonSpringAndroidSpiceService.class);
mRestManager.execute(customSpiceRequest, requestCacheKey,
DurationInMillis.ALWAYS, new CustomRequestListener())
我不知道这是否相关,但我的customSpiceRequest扩展了SpringAndroidSpiceRequest。我已经确定请求之间的requestCacheKey也是相同的
我还需要做些什么来启用请求之间的缓存吗?事实上,RoboSpice正在做您要求的事情:您通过了 DurationInMillis.始终作为要执行的参数 这意味着数据 缓存中的数据将始终被视为已过期。因此,请求将 始终执行网络呼叫。你应该用不同的方法 调用execute时的cacheDuration值 此后,Javadoc得到了增强:
- cacheExpiryDuration:缓存内容过期的持续时间(毫秒)。例如,DurationInMillis.ALWAYS意味着缓存中的数据将始终被视为已过期,因此请求将始终执行其网络操作以获取新数据。DurationInMillis.NEVER意味着数据将永远不会被视为过期,请求将永远不会执行网络操作来刷新数据,但将始终返回缓存的数据。(见{@link DurationInMillis})*