Windows Phone 7 处理休眠和墓碑的恢复
WP7程序的生命周期如下图所示:
休眠状态和墓碑状态这两个状态会比较容易让人混淆的,休眠状态时,程序停止运行,但不同的是此时整个进程还是存在于内存中。当恢复这个程序时,就不需要创建一个新的实例。这样就加快了程序恢复和切换的速度,并且从休眠状态恢复时我们不需要去恢复墓碑数据。一般情况下点击home键,程序会进入休眠状态,当前台程序在运行过程中,内存不足或者不足以让程序流畅运行时,系统会执行一些操作来释放内存,此时程序就可能从休眠状态变换为的墓碑状态。一个程序进入到墓碑状态时,其进程被终止掉,但是程序的回退栈中的信息,以及我们保存的一些信息会保留在内存中。
程序恢复时会触发Application类中的Activated 事件,我们可以通过检查IsApplicationInstancePreserved参数来判断程序是从休眠状态还是墓碑状态返回的,在此方法中我们可以用来恢复之前在Deactivated事件中保存的数据。
处理的代码如下:
private void Application_Activated(object sender, ActivatedEventArgs e){if (e.IsApplicationInstancePreserved) {//从休眠状态恢复 }else {//从墓碑状态恢复//这时候程序在内存中的信息已经被清除掉了,需要在这里处理如何恢复你之前的数据 } }
调试程序墓碑状态的恢复可以通过在vs上设置来实现这一种模拟的效果,设置如下:
从休眠状态恢复到程序的时候,如果这时候我们在程序中正在发送http请求的话,有可能这个请求会被取消掉,这时候我们需要在程序中来捕获这个异常并进行处理。处理代码如下:
private void GetSomeResponse(IAsyncResult MyResultAsync){ HttpWebRequest request = (HttpWebRequest)MyResultAsync.AsyncState; try { HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyResultAsync); if (response.StatusCode == HttpStatusCode.OK && response.ContentLength > 0) { using (StreamReader sr = new StreamReader(response.GetResponseStream())) { //…… } } } catch (WebException e) { if(e.Status == WebExceptionStatus.RequestCanceled) //这里有可能就是从休眠和墓碑状态返回来的//可以在这这里处理休眠和墓碑状态的恢复,例如重新发送http请求…… else { //其他的异常 using (HttpWebResponse response = (HttpWebResponse)e.Response) { MessageBox.Show(response.StatusCode.ToString()); } } } }
转载于:https://www.cnblogs.com/linzheng/archive/2012/01/17/2324991.html
Windows Phone 7 处理休眠和墓碑的恢复相关推荐
- Windows 7关闭睡眠(休眠)模式和删除休眠文件
原文地址:https://www.192ly.com/pc/win7/gb-sm.html 怎么关闭Windows 7关闭睡眠(休眠)功能?Windows 7系统中怎么删除休眠文件?Windows 7 ...
- Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法
Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法 系统环境版本 排除问题过程 解决问题 总结 不知从何时开始,电脑就不定期变的非常卡,尤其是笔者平时不关机,下班都是按 ...
- Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处以及windows强制关机会出现ubuntu出现系统恢复模式
Q1:Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处 A1: 这可能是ubuntu硬盘检测出现问题,需要把先前设置的硬盘挂载删除掉 按ctrl+alt+F2进入终端,看有的博主说按M(如果 ...
- oracle 文件大小为零,windows Oracle数据文件大小为0的恢复case
本站文章除注明转载外,均为本站原创: 转载自love wife love life -Roger 的Oracle技术博客 本文链接地址: windows Oracle数据文件大小为0的恢复case 一 ...
- windows 7 睡眠和休眠的区别
到底用睡眠和休眠,还是直接关机的问题,争论颇多,大家各有各的观点和立场.实际上在很长一段时间内我本人的态度也是变化了不少,在此我想说说我对这个问题的看法,简要分析一下可能涉及到的几个方面.这只是我个人 ...
- 如何关闭windows电脑里的休眠
最近由于项目需求,需要关闭windows系统的休眠功能,同时实现显示器关闭,网络不断开,系统仍然运行的目的. 其实很简单了,大家一起来参考下吧. 打开笔记本,win10系统. 1.点击桌面右下角的电源 ...
- Windows中睡眠和休眠的区别
休眠一般是笔记本电脑才有的功能,睡眠是几乎所有电脑都有 一.系统层面的理解 1.1 睡眠 睡眠状态下,电脑只会消耗很少的电量,电脑可更快启动,并且可以立即返回到离开的位置.因此,使用者不必担心由于电池 ...
- 解决windows下蓝牙设备将休眠中的pc唤醒的困扰
如我之前的文章所述,我有一个Bose的蓝牙音箱,最近我通过尝试,学会了将计算机进入休眠状态,而不是关机,这样所有已经打开的文档就不会再需要时间重新打开,很是方便. 然而,我的蓝牙音箱还接在另一台计算机 ...
- Windows 7 如何开启休眠
首先,进入组策略 运行gpedit.msc. 依次进入:计算机配置--管理模板--系统--电源管理--睡眠设置,找到"关闭混合休眠(接通电源)"项目,启动即可. 这样在关机菜单里, ...
最新文章
- PHP验证码和Ajax验证
- 还应该如何实现“模板化函数指针”?
- java如何读取自定义log4j2_spring boot自定义log4j2日志文件的实例讲解
- Spring MVC:表单处理卷。 5 –选择,选项,选项标签
- LeetCode 126 单词接龙 II
- matlab whos命令
- 操作系统在内存中的位置
- wsimport的使用
- Python:global的使用
- C语言arduino密码锁实验报告,简易密码锁的制作-Arduino中文社区 - Powered by Discuz!...
- flutter 复制粘贴默认英文显示问题
- ArcMap 小知识(3):在ArcGIS中导出数据时显示“保存对象时出错”
- 全国计算机理论知识,全国计算机等级考试理论知识(冲刺练习)
- FPGA之DDR4驱动
- 村子中有50个人,每人有一条狗
- 泛微 e-office v9.0任意文件上传漏洞(CNVD-2021-49104)
- 双系统中删除linux(win7适用)
- 手撕自动驾驶算法——非线性优化
- AC米兰战后的队长们
- Python 小型课设作业,仅200行代码,使用youtube-dl下载视频,使用OpenCV和ffmpeg处理视频成字符视频