Akavache:iOS应用重启后保存的值不可用

时间:2018-02-01 11:48:23

标签: ios xamarin akavache

我在iOS上使用Akavache标准方法(实际上,它是针对Android / iOS的.NET标准项目),但问题仅出现在iOS上。

我在应用生命周期中保存了一些价值:

    await BlobCache.Secure.InsertObject("user", user);

在应用程序新会话中:

    var user = await BlobCache.Secure.GetObject<UserModel>("user");

但该对象不可用(KeyNotFoundException例外)。

最近我还试图在保存对象后立即调用BlobCache.Secure.Flush().Wait(),但仍然没有效果。

此问题仅适用于iOS。 Android很好。 Secure和UserAccount对象都会出现此问题。

即使在应用程序结束时“温和”BlobCache.Shutdown().Wait()之后,数据也不可用。所以,现在还不知道在哪里搜索解决方案。

有什么想法可能导致这个问题以及如何解决它?

2 个答案:

答案 0 :(得分:1)

人们遇到的另一个问题是SqlLite缓存已被链接出去。如果您在LocalMachine上检查类型,并且它的类型为MemoryCache则不会恢复。

只需在项目中的某个位置添加the linker static class(即使它是PCL或Standard库)。

对我有用。

答案 1 :(得分:0)

您是否在ApplicationName上设置了BlobCache属性?在iOS上,这似乎比在Android上更为必要。