Microsoft的最佳做法声明:
如果应用程序依赖来自隔离存储的数据,则不应在Launching事件处理程序或Activated事件处理程序中加载此数据。磁盘操作可能需要几秒钟,并且在应用程序加载和激活之前会调用这些事件,因此访问这些处理程序中的隔离存储会导致应用程序加载时等待时间过长。相反,您应该在应用程序加载后异步加载来自隔离存储的数据。
为什么这样,以及何时应该从隔离存储中读取数据?
我想要加载的是,如果手机用户将其用户名/密码持久保存到隔离存储,并在第一个屏幕上预加载用于登录的用户/密码。应该何时采取行动?
感谢, 标记
答案 0 :(得分:1)
首先,不要存储密码。永远!任何地方!存储密码的盐渍哈希值。如果你需要存储它以传递给webservice(或类似的),webservice会在成功登录时返回一个令牌并存储它。
现在,你的实际问题 你自己已经回答了它的第一部分。
因为您希望应用程序具有响应能力,所以当应用程序启动时,您应该从UI线程执行及时的操作。
数据应该在最适合应用程序的时间加载并保存到IsolatedStorage,数据量以及需要或更新的频率。
在您的特定实例中,我不希望从隔离的stroage中检索2个字符串的速度非常慢,因此我会在相关页面的Loaded()
事件中执行检索。
如果您只是检索用户名和密码,我会考虑使用IsolatedStorageSettings来保留这些用户名和密码。
如果您还有很多其他细节需要存储并且几乎同时需要这些细节,您可能希望将它们全部存储在一起,以便您可以一起检索它们。
答案 1 :(得分:1)
在加载应用程序之前推迟从隔离存储中加载数据的动机,以及按照这种方式进行数据处理的动机是双重的。
在这些资源受限的设备上加载应用程序有很多工作要做。如果您的应用程序这样做是实用的,那么在应用程序响应之前推迟任何操作将改善用户体验。还注意到你有5s的证书需要显示一些东西和20s响应 - 有些设备比其他设备更慢/更快。
异步对任何非常重要的操作都有好处,因此您不会阻止UI线程并干扰并导致设备看起来没有完全响应。
值得记住的是,除了正常的低负载测试方案之外,手机可能正在做你未在后台考虑的事情 - 例如同步邮件。
我同意Matt的意见,为了登录凭证,加载2个字符串可能不会导致性能问题。
如果您想要非常勤奋,可以在加载登录页面后异步加载该数据并禁用控件直到检索到该数据为止。