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

编程知识 更新时间:2023-04-30 00:01:00

 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());  
             }  
         }  
     }  
}
    转载自: http://wwwblogs/linzheng/archive/2012/01/17/2324991.html

更多推荐

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

本文发布于:2023-04-22 06:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/4749f02c2528f2e7735bb33d2e6c87ad.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:墓碑   Windows   Phone

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 95068文章数
  • 24045阅读数
  • 0评论数