在Windows Phone 7中应用程序被雪藏的时候,他的两类信息必须由开发者恰当处理,他们分别是永久数据和瞬间状态。
永久数据(Persistent data)是一个应用程序的所有实例共享的数据,应该被保存在独立外存(Isolated Storage)中。例如应用程序的环境设置和游戏程序的闯关进度都是典型的永久数据。
瞬间状态(Transient state)是一个应用程序的某个实例独自使用的数据,应该被保存在内存中。例如应用程序查询Web服务得到的返回值和电子书的当前位置是典型的瞬间状态。
这两类信息的存储、装载机制完全及其由此造成的用户体验不同。
保存永久数据的独立外存是手机硬盘上为文件存储专设的区域。独立外存非常有用,因为它可以永久地保存任意实例改变过的应用程序信息。使用独立外存的弱点是载入时间可长达若干秒。如果应用程序在启动时就试图载入大量永久数据,则启动过程需要很长的时间完成,这将造成极差的用户体验。极端情况下,如果应用程序装载过程超过10秒,操作系统还会终止该程序。
瞬间状态可被开发者保存到Microsoft.Phone.Shell命名空间下PhoneApplicationService类的State成员属性中。当应用程序被雪藏时,State中的瞬间状态被操作系统保存到内存。当雪藏的应用程序复苏时,操作系统会将State中的内容恢复到雪藏前的瞬间状态。State的内容一直被保存在内存中,所以其存取速度比存取独立外存中的永久数据快得多。然而State中的瞬间状态只在应用程序雪藏时才有效。一旦雪藏的应用程序被关闭或其新实例被启动,State中将不再包含任何数据。如果雪藏的应用程序占用了系统需要的资源,则这个雪藏的应用程序会被关闭,State中保存的瞬间状态也被释放。
根据永久数据和瞬间状态的特点,开发者可以采用恰当的策略和选择适当的时机,对他们进行保存和装载。比如存取永久数据应该采用增量方式,避免一次性的保存和装载。而存取瞬间状态则应在雪藏和复苏时及时进行。
本文转自 飞雁51CTO博客,原文链接:http://blog.51cto.com/felixyan/489130,如需转载请自行联系原作者