如果存在缓存值,则Akavache GetAndFetchLatest永远不会获取最新信息

时间:2015-06-30 18:21:12

标签: c# xamarin akavache

我正在尝试在Xamarin.Forms项目中使用Akavache GetAndFetchLatest方法,但它没有按照我的预期工作,希望有人能够找到我出错的地方。

我正在调用这样的方法:

BlobCache.Secure.GetAndFetchLatest (cacheId, FetchOrganizations, dt => true);

我的应用程序第一次启动时,FetchOrganizations方法按预期调用,我可以看到我的本地服务器处理请求。但是,只要Akavache缓存了数据,它就只返回缓存,并且再也不会调用FetchOrganizations方法。我的服务器从未看到另一个请求如果我使用短暂超时,则在缓存过期时将调用FetchOrganizations方法。我已经尝试过使用fetchPredicate参数,但这似乎没有帮助。

还有另一种方法可以让GetAndFetchLatest总是尝试获取新数据吗?我误解了fetchPredicate是如何工作的吗?

1 个答案:

答案 0 :(得分:5)

我意识到这是旧的,但我认为如果有其他人遇到它会回答它会很有用。在完成OP:http://www.maiersoft.de/blog/caching-httprequests-in-xamarin-crossplatform-app-using-akavache/

时,可以参考此博客文章以获取更详细的描述
var cachedOrgs = BlobCache.Secure.GetAndFetchLatest (cacheId, FetchOrganizations, dt => true);

cachedOrgs.Subscribe(organizations => {
// do something with your results from the cache (first time)
// then do something with results from the server (second time)
});

传递给Subscribe()的操作将执行两次,一次使用缓存值,另一次使用服务器中的值。