每当我开始活动时,我都会使用spicemanager.execute和params UserCacheKey以及一周的CacheTime从服务器获取用户对象。
当我执行pull to refresh时,我使用spicemanager.execute忽略当前缓存的用户对象缓存,而不提供UserCacheKey和CacheTime参数。
现在我从服务器获得了一个newUser对象,我想用这个新的覆盖仍然在缓存中的现有用户对象。所以我做的是使用spicemanager.putInCache并提供params User.class,UserCacheKey和newUserObject。我觉得奇怪的是我无法提供CacheTime。无论如何,我认为旧的User对象被我的新对象覆盖,因为我使用相同的UserCacheKey来存储对象。
但是,当我打电话从服务器(使用缓存)获取用户时,我得到了返回的旧用户对象,我认为它会被我的newUser对象覆盖。
很抱歉这是分配文字,但我不知道我是否正确实施。
答案 0 :(得分:1)
当RoboSpice从网络加载数据时,它被放置在由缓存键和对象类型索引的缓存中,并加盖时间戳。在这一点上,到期是没有意义的。它仅用于在数据已经在缓存中时跟随请求。
对于正常负载,我建议使用execute(..., DurationInMillis.ONE_WEEK, ...)
。这意味着如果在缓存中找到数据,它将检查它是否有效期不到一周。
然后在手动刷新时使用execute(..., DurationInMillis.ALWAYS_EXPIRED, ...)
,以便跳过缓存并从网络加载数据。加载的数据仍然存储在缓存中,因此下一个“正常”数据将被存储在缓存中。请求可以检索它。