源地址:http://www.cnblogs.com/zhangdongzi/archive/2011/08/24/2152551.html
很久没有上博客园写文章了,3个月前也是由于写的android文章,帮我找到第一份android工作,让我更加坚信,“机遇往往垂青那些有准备的人”,这句话。android如火如荼,wp7才刚开始,我并非着重于比较哪方技术优劣,我只是一介码农,靠学点技术,增加面试筹码,也借此提高工资而已,不管wp7以后如何,反正。我相信,现在开始,就现在,马上掌握wp7技术开发,能提高工资,不管你信不信,反正我是信了。
这里首先要讲解的就是wp7软件的生命周期,当然,很多人可能会认为这个对开发不重要,但是我要声明一点,不论怎样,你终究会懂得它的重要性,就最常见的来说吧,起码面试官会问你这个问题,于是必须放在第一课。
在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。分别是启动、复活(激活程序恢复状态)、停用(记录墓碑数据)、关闭(彻底关闭)。
- Launching
- Closing
- Activated
- Deactivated
以上的是软件的生命周期,但不是页面的,2者不能混淆。
二:页面生命周期:
第一次加载完:Loaded事件--页面预览另一页面时:Unloaded事件。
如果通过NavigationService切换到新的页面:本页面离开时 OnNavigatedForm 事件,新页面到来时:OnNavigatedTo 事件
OnNavigatedTo---- Load ----- OnNavigatedForm ----- UnLoaded。 这样看来是先调用新页面,然后再暂停旧页面的,那么数据的保存就要有先后顺序了。
- Loaded
每一次页面的载入完成时,都会引发 Loaded 事件 - Unloaded
当从这个页面要巡览到另外一个页面时,就会引发 Unload 事件 - OnNavigatedFrom
当利用 NavigationService ,要从页面离开时会引发 OnNavigatedForm 事件,使用时必须要覆写 Page 事件 - OnNavigatedTo
当利用 NavigationService ,寻览到新的页面时,会引发新页面的 OnNavigatedTo 事件,使用时必须要覆写 Page 事件
总结以上说明:
在 Deactivated 以及 Activated 这类事件中处理的是整个应用程序通用性的数据或是状态;而 OnNavigateTo 这类事件中则是处理页面使用的暂时数据或是处理其他传递过来的数据。