Windows应用商店应用保存状态信息

时间:2012-12-21 02:26:19

标签: c# windows-8 windows-store-apps application-state

我刚刚开始使用Windows 8开发(使用c#),并正在将我的一个应用程序移植到Windows应用商店。基本上我的应用程序采用用户输入字符串,计算适当的输出,并响应用户。所以我使用列表视图来跟踪“对话”。我将用户的输入显示为列表视图元素,然后将输出显示为下一个元素(使用格式为颜色的文本块...)。

我想做的是,一旦应用程序终止,这个“对话”仍然存在,但我不确定最好的方法。我的第一个想法是在挂起时序列化列表视图对象然后在加载时反序列化它,但listview不可序列化...所以我的下一个想法是将每个输入和输出字符串写出到文件并尝试重建listview当我加载应用程序时,从这些字符串,但我也遇到了一些问题。

所以我很好奇最好的方法是什么。我希望应用程序开始备份以前的对话已经显示相同的格式,什么不是。有没有人有任何想法?

1 个答案:

答案 0 :(得分:2)

无论如何我都不会坚持ListView,你只需要将数据保存在其中。您使用的是MVVM类型模型,您的对话可能会被捕获为ObservableCollection然后绑定到ListView吗?如果没有,你应该:)

然后你只需要序列化ObservableCollection(参见one option for that here)。你坚持的地方取决于你:

  • LocalFolder将使用基于文件的方法并在本地设备上提供
  • RoamingFolder也会使用基于文件的方法,但在用户拥有的多个设备上使用云进行同步(并安装了应用)
  • 云存储(如Windows AzureWindows Azure Mobile Services)将为您提供基本无限的存储空间,但需要管理云帐户并为其付费(尽管免费等级可能已足够)
  • SQLite这样的内存数据库是另一种选择,如果您对此感兴趣,它会为您提供关系语义。

要开始使用,我会说使用LocalFolder并将您的集合保存到文件中,然后当您重新水化它时,简单的数据绑定应该自动处理显示。在某些时候,您可能需要决定存储多少。您希望您的应用程序对用户做出响应(“快速且流畅”),因此为此您可能需要根据请求引入数据而不是一次性引入数据(可能是版本2功能!)