我最初试图使用 获取和缓存图像BlobCache.LocalMachine.LoadImageFromUrl(someURL)
,但我发现它在我调用此方法后停止响应。(是的,我设置了BlobCache.ApplicationName
,我什至调用BlobCache.EnsureInitialized()
了 ,并且 SQL3 库没有被链接器剥离。)所以我做了一些实验并试图找出问题所在。经过几个小时的测试,我发现只有这些方法才适用于我的情况:
1.
BlobCache.LocalMachine.DownloadUrl(someURL).Wait(); // Can fetch the right image file but it won't store it into cache; The cache disappears if I restart the app
var image = BlobCache.LocalMachine.LoadImage(someURL).Wait().ToNative(); // This part is good
2.
BlobCache.LocalMachine.InsertObject<string>(key, value).Wait();
var value = BlobCache.LocalMachine.GetObject<string>(key).Wait(); // This functions well; I can get the correct value right away after a restart
此外,每当我在代码中使用 await 时,它都会陷入无限死锁(?)。说,var value = await BlobCache.LocalMachine.GetObject<string>(key);
。(当然我已经导入System.Reactive.Linq
了。)对我来说可能的解决方法是使用wait()
orsubscribe()
代替。
BlobCache.LocalMachine.GetOrFetchObject() 也不起作用。
PS:我的 VS Mac 上有最新的 Xamarin.iOS 和 Mono 版本。
那么在 Xamarin.iOS 中使用 Akavache 时,我是否错过了任何重要的事情?请赐教。
我在这里发布了一个问题。