在新的trainning kit 中有一个例子解释的很清楚了:
1. Application_Launching:只有在新启动程序时触发
2. Application_Closing:只有在推出程序时触发--只有在程序mainpage时按硬后退键
3. Application_Activated:从home键或者其它方式离开,back键返回时触发
4. Application_Deactivated:从home键或者其它方式离开时触发
Application_Launching和Application_Activated是互斥的,不会同时触发;Application_Closing和Application_Deactivated也如此!
在page level有2个触发事件,分别是离开和返回页面的时候。
protected override void OnNavigatedFrom(NavigationEventArgs e)
protected override void OnNavigatedTo(NavigationEventArgs e)
基本原则:在相应离开事件处理方法中存储app或者page 的state,在返回时读取。但是比如app中有一个list,新启动程序或者返回时都需要把之前存储好的数据显示出来,那么就要在Application_Launching和
Application_Activated读取本地存储。前者要自己实现,后者有PhoneApplicationService支持。其实如果跟踪app lifecycle就会发现,无论是新启动app或者从其他地方返回,都会初始化app和page,那么在相应的构造函数中读取存储数据其实是最合适的,适应所有情况!