Windows Phone 7 处理休眠和墓碑的恢复

简介:

WP7程序的生命周期如下图所示:

 

 

休眠状态和墓碑状态这两个状态会比较容易让人混淆的,休眠状态时,程序停止运行,但不同的是此时整个进程还是存在于内存中。当恢复这个程序时,就不需要创建一个新的实例。这样就加快了程序恢复和切换的速度,并且从休眠状态恢复时我们不需要去恢复墓碑数据。一般情况下点击home键,程序会进入休眠状态,当前台程序在运行过程中,内存不足或者不足以让程序流畅运行时,系统会执行一些操作来释放内存,此时程序就可能从休眠状态变换为的墓碑状态。一个程序进入到墓碑状态时,其进程被终止掉,但是程序的回退栈中的信息,以及我们保存的一些信息会保留在内存中。

程序恢复时会触发Application类中的Activated 事件,我们可以通过检查IsApplicationInstancePreserved参数来判断程序是从休眠状态还是墓碑状态返回的,在此方法中我们可以用来恢复之前在Deactivated事件中保存的数据。

处理的代码如下:

 


 
 
  1. private void Application_Activated(object sender, ActivatedEventArgs e)  
  2. {  
  3.   if (e.IsApplicationInstancePreserved)  
  4.   {  
  5.     //从休眠状态恢复  
  6.   }  
  7.   else  
  8.   {  
  9.     //从墓碑状态恢复  
  10.     //这时候程序在内存中的信息已经被清除掉了,需要在这里处理如何恢复你之前的数据  
  11.   }        

 调试程序墓碑状态的恢复可以通过在vs上设置来实现这一种模拟的效果,设置如下:

 

 

 从休眠状态恢复到程序的时候,如果这时候我们在程序中正在发送http请求的话,有可能这个请求会被取消掉,这时候我们需要在程序中来捕获这个异常并进行处理。处理代码如下:

 


 
 
  1. private void GetSomeResponse(IAsyncResult MyResultAsync)  
  2. {     
  3.      HttpWebRequest request = (HttpWebRequest)MyResultAsync.AsyncState;     
  4.      try     
  5.       {    
  6.          HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyResultAsync);     
  7.          if (response.StatusCode == HttpStatusCode.OK && response.ContentLength > 0)     
  8.          {     
  9.              using (StreamReader sr = new StreamReader(response.GetResponseStream()))   
  10.             {    
  11.                //……                         
  12.              }    
  13.         }    
  14.      }    
  15.      catch (WebException e)    
  16.      {    
  17.             
  18.        if(e.Status == WebExceptionStatus.RequestCanceled)    
  19.              //这里有可能就是从休眠和墓碑状态返回来的  
  20.              //可以在这这里处理休眠和墓碑状态的恢复,例如重新发送http请求……  
  21.        else    
  22.           {    
  23.              //其他的异常  
  24.              using (HttpWebResponse response = (HttpWebResponse)e.Response)    
  25.               {    
  26.                   MessageBox.Show(response.StatusCode.ToString());    
  27.              }    
  28.          }    
  29.      }    

 

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1078449


相关文章
|
6月前
|
存储 缓存 Java
释放C盘空间:释放Windows休眠文件和关闭虚拟内存
在 Windows 11 专业版中,可以通过以下步骤来释放休眠文件(Hibernate File),以释放磁盘空间。休眠文件是系统休眠(Hibernate)功能所需要的文件,它保存了系统的当前状态,以便在休眠状态下恢复。如果你不使用休眠功能,如果因为C盘空间不足,可以考虑释放这个文件来腾出磁盘空间。
14835 1
|
5月前
|
Windows
windows系统bat批处理 windows 关机,重启,锁定,休眠,注销
windows系统bat批处理 windows 关机,重启,锁定,休眠,注销
1173 0
|
Android开发 iOS开发 Windows
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
1473 0
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
|
XML 开发框架 前端开发
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
172 0
Windows Phone快速入门需掌握哪些能力
|
移动开发 Android开发 开发者
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
265 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
|
编解码 前端开发 JavaScript
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
202 0