在window phone 7中软件生命周期跟以往的软件程序运行机制有所不同 ,你必须时刻关注有关生命周期的事件,这里借一张图来表示:
1:应用程序第一次启动(首页Tile或应用列表中启动)就开启一个进程,产生应用程序实例,然后就调用Launching事件,在这里你可以做一些程序初始化的准备工作,但不要做太耗时的工作,比如读取文件或者说是调用服务器端数据等,因为在这里页面还没有加载,避免用户误以为软件Bug或是其他异常。
2:第一个界面出来了,进入Running状态。如果你按下return按钮,会引发回退,因为它前面已经没有页面回退,因此它会引发了Closeing事件,关闭程序;如果是第2个就是“回退”了。如果你按下“开始”按钮,应用程序便会进入 Deactivated 的事件,进入tombstoning状态,之后移到背景。可能会执行其他程序或操作,这时如果你按下“return”按钮,程序会调用 Activated 事件,然后又回到Running状态。
在Deactivated 的事件 与 Activated 事件中,你可以保存当前状态的临时数据,避免界面当前数据丢失。当然必须要再10秒钟内完成,否则会被系统杀死回收。
这些直接关系到执行模式的代码分别是Application_ Launching、Application_ Activated、Application_ Deactivated、Application_ Closing。分别是启动、复活(激活程序恢复状态)、停用(记录墓碑数据)、关闭(彻底关闭)。
以上的是软件的生命周期,但不是页面的,2者不能混淆。
二:页面生命周期:
第一次加载完:Loaded事件--页面预览另一页面时:Unloaded事件。
如果通过NavigationService切换到新的页面:本页面离开时 OnNavigatedForm 事件,新页面到来时:OnNavigatedTo 事件
OnNavigatedTo---- Load ----- OnNavigatedForm ----- UnLoaded。 这样看来是先调用新页面,然后再暂停旧页面的,那么数据的保存就要有先后顺序了。
总结以上说明:
在 Deactivated 以及 Activated 这类事件中处理的是整个应用程序通用性的数据或是状态;而 OnNavigateTo 这类事件中则是处理页面使用的暂时数据或是处理其他传递过来的数据。