0

我正在尝试在 Xamarin.Forms 项目中使用Akavache GetAndFetchLatest 方法,但它没有按我预期的那样工作,并且希望有人能够发现我哪里出错了。

我正在调用这样的方法:

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

我的应用程序第一次启动时,FetchOrganizations 方法按预期调用,我可以看到我的本地服务器正在处理请求。但是,一旦 Akavache 缓存了数据,它只会返回缓存,而不会再次调用 FetchOrganizations 方法。我的服务器永远不会看到另一个请求。如果我使用较短的超时时间,缓存到期时将调用 FetchOrganizations 方法。如您所见,我尝试使用 fetchPredicate 参数,但这似乎没有帮助。

有没有另一种方法可以让 GetAndFetchLatest 始终尝试获取新数据?我是否误解了 fetchPredicate 的工作原理?

4

1 回答 1

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() 的操作将执行两次,一次使用缓存的值,另一次使用来自服务器的值。

于 2016-01-21T22:32:12.637 回答