Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Jackson和Spring在Robospice中为REST请求启用缓存_Android_Jackson_Robospice - Fatal编程技术网

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

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

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

我正在这样设置SpiceManager:

 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})*

这似乎与当前文档的“cacheExpiryDuration-持续时间(以毫秒为单位)相反,在该持续时间之后,缓存内容将被视为过期。DurationInMillis.ALWAYS表示缓存中的数据始终会返回(如果存在)。DurationInMillis.NEVER表示缓存中的数据永远不会返回。(请参阅DurationInMillis),如何指定最大缓存大小?RS上没有此类功能。我们对此类功能的PR持开放态度。