我最初试图使用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()
或subscribe()
。
BlobCache.LocalMachine.GetOrFetchObject()也不起作用。
P.S .:我在VS Mac上安装了最新的Xamarin.iOS和Mono。
那么,在Xamarin.iOS中使用Akavache时,我是否错过任何重要的事情吗? 请赐教。
我发布了一个问题here。