06,Windows Phone 8程序的生命周期.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:1 大小:1.4MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

06,Windows Phone 8程序的生命周期.pdf

06,WindowsPhone8程序的生命周期.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

06,WindowsPhone8程序的生命周期内容预告:l启动(Launching)和关闭(Closing)lDeactviating和ActivatinglDormant和Tombstonedl用模拟器模拟这些事件l空闲检测l快速恢复l生命周期规划l页面导航和后退栈WindowsPhone应用程序在不同的状态间过渡的图示如下:程序从点击开始屏幕的图标上启动,用户可以关闭程序,系统可能挂起你的程序(在程序失去焦点的时候),挂起的程序可能会进入墓碑,程序可能从挂起状态激活。当用户启动一个新的程序的实例时,之前的挂起状态会丢失。比如当运行一个程序时,点到了Home键,再点击开始屏幕的图标上启动程序,按Home键之前挂起状态会丢失,正确的做法是按住Back键不动选择那个程序恢复状态。在WindowsPhone8中,可以用快速恢复功能(FastApplicationResume)重新启动挂起的程序。应用程序的生命周期事件:privatevoidApplication_Launching(objectsender,LaunchingEventArgse){}WindowsPhone应用程序环境会通过一些事件通知上述状态,在项目模板里的App.xaml里订阅了事件,并在App.xaml.cs处理了,初使化情况下处理逻辑是空的。启动和关闭:Launching和Closing当程序启动时,Applcation_Launching会被调用,程序结束时,Application_Closing会被调用,调试器在程序停止后还会继续运行,所以需要手动结束。程序的Deactivation和Reactivation:出于省电的考虑,任何时间只有一个程序运行在前台,用户可以deactivate程序也可以reactivate它们,程序需要处理Activated和Deactivated事件。程序的休眠(Dormant):用户可以随时休眠应用程序,然后运行其他程序,这个时候Application_Deactivated函数被调用,电话突然打来时,程序也会休眠,锁屏时程序也会休眠一段时间。用户也可以恢复休眠的程序。但是不保证一定能从休眠状态中恢复。从休眠中重新激活:处理休眠:当程序被休眠时必须尽可能地保存数据因为程序可能会关闭,如果用户不再通过长按Back回到那个程序,Application_Deactivated就相当于Application_Closing了。你的程序有5秒钟的机会清理现场(保存数据),之后程序会被从内存中清除掉。当程序长按Back恢复时,它会自动恢复到Deactivated时的那个页面,这是操作系统帮我们做的,但是,页面的内容并不会自动保存。从休眠到墓碑:一个程序会和其他程序一起在内存里休眠,如果操作系统的内存不够用了会释放最先休眠的程序的缓存状态,这个过程叫做“墓碑化”。页面导航历史和缓存状态都被墓碑了的程序维护着。当一个休眠了的程序恢复时,缓存状态会重新加载,程序会万利到它离开之前的那个页面。当一个墓碑了的程序恢复时,它会重启离开之前的页面,但是所有的程序状态会丢失,你需要重新加载。一个程序可以决定从哪个状态激活。从墓碑状态重新激活:从休眠还是墓碑恢复的?可以在恢复前做一个判断privatevoidApplication_Activated(objectsender,ActivatedEventArgse){if(e.IsApplicationInstancePreserved){//Dormant-objectsinmemoryintact}else{//Tombstoned-needtoreload}}状态和墓碑:当程序从休眠恢复时,程序会准确地恢复到离开时的页面,所有的对象和它们的状态都在内存里,你可能需要写一些逻辑来重置依赖于时间或网络的调用代码。当程序从墓碑恢复时,程序只会恢复到离开时的页面,但所有对象和它们的状态都丢失了,所以需要重新加载控件的数据,这就是为什么需要保存状态,程序从内存中移除了系统也维护着状态。当程序的一个新的实例启动时,状态是空的。如果一个先前的程序挂起了,那么那个程序存储的状态字典会丢失。状态字典:PhoneApplicationService.Current.State["Url"]="www.robmiles.com";休眠程序的状态信息存在一个状态字典里,如上述代码。可以在Application_Deactivated函数里存储,然后在页面激活时读取。所以Application_Deactivated有两件事情要做,保存数据以