Wp7中sliverlight模式下的应用程序周期和墓碑化
WP7的目前,不支持第三方应用程序的后台运行,所以不支持真正多任务程序同时运行,不支持应用程序的后台运行,视觉上看到应用程序后台暂停效果其实是引发了应用程序失效事件Deactivated。然后恢复的时候执行了Reactived事件。
当一个应用程序正在的执行的时候,如果
有来电
用户点击Start菜单
手机休眠
等情况下,只要不是用户主动关闭正在运行的应用程序,或者直接Back退出应用程序。这个时候应用程序都会Deactivate。
如果用户恢复应用程序就会执行Reactive,重新激活应用程序
这也是墓碑化的概念由来
Wp中的应用程序周期图片如下;
从开始菜单启动的应用程序的时候触发Launch事件,用户主动关闭应用程序,或者在程序运行的界面下点击Back会主动的引发Closing事件
其他情况下应用程序的退出和恢复都会引发Deactivate和Activated事件。
Deactivate事件其实就是应用程序的真正关闭,已经被杀死了,如果要在第二次Active的时候看到的效果和退出时候的应用程序界面数据一样,必须在Deactivate保存相关的数据,然后Active的时候重新加载,让用户感觉到一模一样的程序,好像没有重新启动一样。
程序数据保存和加载
如果在Deactivate和Active直接保存和读取数据可以使用PhoneApplicationService.Current.State这个属性,State保存应用程序的状态值,是一个字典类型的属性,可以存储和读取数据。
在应用程序真正退出Close的时候,State数据会被清空。
如果想要真正的永久保存这些数据,那就必须存储数据到独立存储空间IsolateStorage ,
参考这个文章 http://www.cnblogs.com/zjypp/archive/2012/02/05/2338885.html
WP中页面周期
如图示。页面周期主要有一下几个。
页面的构造函数初始化:
页面的 OnNavigatedTo。页面是从其他页面导航过来的,在构造函数初始化后,执行这个方法。
页面的OnNavigatedFrom。如果页面A可以导航到页面B,执行了导航任务后,A页面触发这个事件,有点类似准备关闭本页面的事件