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 处理休眠和墓碑的恢复相关推荐

  1. Windows 7关闭睡眠(休眠)模式和删除休眠文件

    原文地址:https://www.192ly.com/pc/win7/gb-sm.html 怎么关闭Windows 7关闭睡眠(休眠)功能?Windows 7系统中怎么删除休眠文件?Windows 7 ...

  2. Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法

    Window10 系统休眠或睡眠状态恢复-占用磁盘空间 100% 问题以及解决方法 系统环境版本 排除问题过程 解决问题 总结 不知从何时开始,电脑就不定期变的非常卡,尤其是笔者平时不关机,下班都是按 ...

  3. Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处以及windows强制关机会出现ubuntu出现系统恢复模式

    Q1:Ubuntu拔掉挂载硬盘后一直卡在ubuntu的logo处 A1: 这可能是ubuntu硬盘检测出现问题,需要把先前设置的硬盘挂载删除掉 按ctrl+alt+F2进入终端,看有的博主说按M(如果 ...

  4. oracle 文件大小为零,windows Oracle数据文件大小为0的恢复case

    本站文章除注明转载外,均为本站原创: 转载自love wife love life -Roger 的Oracle技术博客 本文链接地址: windows Oracle数据文件大小为0的恢复case 一 ...

  5. windows 7 睡眠和休眠的区别

    到底用睡眠和休眠,还是直接关机的问题,争论颇多,大家各有各的观点和立场.实际上在很长一段时间内我本人的态度也是变化了不少,在此我想说说我对这个问题的看法,简要分析一下可能涉及到的几个方面.这只是我个人 ...

  6. 如何关闭windows电脑里的休眠

    最近由于项目需求,需要关闭windows系统的休眠功能,同时实现显示器关闭,网络不断开,系统仍然运行的目的. 其实很简单了,大家一起来参考下吧. 打开笔记本,win10系统. 1.点击桌面右下角的电源 ...

  7. Windows中睡眠和休眠的区别

    休眠一般是笔记本电脑才有的功能,睡眠是几乎所有电脑都有 一.系统层面的理解 1.1 睡眠 睡眠状态下,电脑只会消耗很少的电量,电脑可更快启动,并且可以立即返回到离开的位置.因此,使用者不必担心由于电池 ...

  8. 解决windows下蓝牙设备将休眠中的pc唤醒的困扰

    如我之前的文章所述,我有一个Bose的蓝牙音箱,最近我通过尝试,学会了将计算机进入休眠状态,而不是关机,这样所有已经打开的文档就不会再需要时间重新打开,很是方便. 然而,我的蓝牙音箱还接在另一台计算机 ...

  9. Windows 7 如何开启休眠

    首先,进入组策略 运行gpedit.msc. 依次进入:计算机配置--管理模板--系统--电源管理--睡眠设置,找到"关闭混合休眠(接通电源)"项目,启动即可. 这样在关机菜单里, ...

最新文章

  1. PHP验证码和Ajax验证
  2. 还应该如何实现“模板化函数指针”?
  3. java如何读取自定义log4j2_spring boot自定义log4j2日志文件的实例讲解
  4. Spring MVC:表单处理卷。 5 –选择,选项,选项标签
  5. LeetCode 126 单词接龙 II
  6. matlab whos命令
  7. 操作系统在内存中的位置
  8. wsimport的使用
  9. Python:global的使用
  10. C语言arduino密码锁实验报告,简易密码锁的制作-Arduino中文社区 - Powered by Discuz!...
  11. flutter 复制粘贴默认英文显示问题
  12. ArcMap 小知识(3):在ArcGIS中导出数据时显示“保存对象时出错”
  13. 全国计算机理论知识,全国计算机等级考试理论知识(冲刺练习)
  14. FPGA之DDR4驱动
  15. 村子中有50个人,每人有一条狗
  16. 泛微 e-office v9.0任意文件上传漏洞(CNVD-2021-49104)
  17. 双系统中删除linux(win7适用)
  18. 手撕自动驾驶算法——非线性优化
  19. AC米兰战后的队长们
  20. Python 小型课设作业,仅200行代码,使用youtube-dl下载视频,使用OpenCV和ffmpeg处理视频成字符视频

热门文章

  1. TypeScript泛型约束
  2. 零基础带你学习MySQL—字符串相关的函数(十三)
  3. 山东省德州市有哪些明星?
  4. 轻轨与地铁有什么区别吗?
  5. 旅游捞金的六大方式,玩着把钱赚了
  6. 为什么中国没有类似于windows的操作系统?
  7. 【以太坊源码】I.区块和交易,合约和虚拟机
  8. python入门——P47魔法方法:定制序列
  9. radvd移植到arm交叉编译问题解决
  10. git jenkins 子目录,在Jenkins中,如何将项目签出到特定目录(使用GIT)