应用程序生命周期(墓碑机制(程序和页面))

转载 2012年03月22日 21:47:19

     由于Windows Phone 目前不支持第三方应用程序在后台运行,也就是说只有唯一一个第三方应用程序在前台运行,当用户离开应用程序页面时,应用程序会被操作系统终止(推送通知服务将在后面讲)。微软提供了另一种方法称之为tombstone,虽然在Mango更新中支持了所谓的“多任务”,但是我们还是需要处理墓碑化,在CodePlex就有这么一个开源项目,TombStoneHelper,可以帮助我们简化墓碑操作,但是我们首先来系统学习下墓碑机制以及应用程序生命周期。

      首先我们需要认识清什么是墓碑机制以及楚一般的应用程序生命周期和TombStone生命周期有什么区别。

tombstone是一个很形象的描述,Imaging this:操作系统对应用程序说,你要死了,你有什么东西赶紧记下来写在你的墓碑上吧~(10秒钟原则

    在WP7中用户在应用程序主界面点击Back按钮,和通常我们在WinForm程序中点击“关闭”按钮是一样的,结果都是退出应用程序。

生命周期处理事件,在App.xaml.cs中的英文描述是这样子的:

        // Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
}

// Code to execute when the application is activated (brought to foreground)
// This code will not execute when the application is first launched
private void Application_Activated(object sender, ActivatedEventArgs e)
{
}

// Code to execute when the application is deactivated (sent to background)
// This code will not execute when the application is closing
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
}

// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{
}

翻译过来总结下就是:

分别介绍下,Launching事件:当应用程序启动时候调用,重新激活时不调用;通常用来加载应用程序的一些永久配置数据。

Closing事件:当应用程序关闭的时候调用,失去激活的时候不调用;通常用来保存一些应用程序永久配置数据到独立存储空间中。

 Activated事件:当程序重新激活的时候调用,启动的时候不调用;从PhoneApplicationService.State["key"]中读取一些应用程序临时数据。

Deactived事件:当程序失去激活的时候调用,关闭的时候不调用;通常用来使用PhoneApplicationService.State保存一些应用程序临时数据。

 我们不应该在以上几个事件中处理大量的数据,因为MS有一个称之为10秒钟原则的限制(为了更好的用户体验,超过10秒,用户会想可能程序出问题了~)。

前面的一直说的是程序的相关信息,而当程序被重新激活的时候,我们需要回复页面原来的显示状态。通过PhoneApplicationPage.State(注意啊,前面的是PhoneApplicationService.State)在离开页面和进入页面的时候保存和回复页面的显示状态信息。

离开页面的时候,PhoneApplicationPage.State["key"]保存界面的显示状态。

当进入页面的时候,PhoneApplicationPage.State["key"]恢复页面的额显示状态。

结束语:本文讲述了应用程序生命周期,Tombstone墓碑机制,以及10秒钟原则,如何保存和恢复应用程序的永久数据(独立存储IsolatedStorage),如何保存和恢复应用程序的临时数据(PhoneApplicationService.State["key"]),如何保存和恢复页面的显示状态(PhoneApplicationPage.State["key"])。希望对你有帮助,祝各位博友开心进步~

 

 具体请参见MSDN:Windows Phone 执行模型http://msdn.microsoft.com/zh-cn/library/ff769557(v=vs.92).aspx

Windows Phone 执行模型

此主题尚未评级 评价此主题
 
Windows Phone
 

 

2012/2/9

在 Windows Phone 执行模型下,当用户导航离开应用程序时,该应用程序通常会置于休眠状态。但是,当应用程序处于此睡眠状态时,操作系统可能会将其终止。本节介绍如何构建在此模型下提供无缝用户体验的应用程序。

Android 墓碑机制

墓碑机制是微软Windows Phone 7手机操作系统软Windows Phone 7手机操作系统中的一个程序运行规则。说简单点,就是手机上一个任务被迫中断时(如有电话打入),系统记录下当前应用...
  • lyp13243189027
  • lyp13243189027
  • 2016年10月21日 17:30
  • 767

ASP.NET应用程序生命周期

ASP.NET应用程序生命周期其中的ASP.NET请求管道,我们很多人可能已经知道ASP.NET请求管道有19个事件,那是IIS 5.0和IIS 6.0 或者IIS 7.0以上经典模式运行的时候情...
  • zhuyu19911016520
  • zhuyu19911016520
  • 2016年01月04日 09:06
  • 449

Android 应用程序生命周期

今天突然就bu'xia啊,接下来了解下Service
  • zqingyang521
  • zqingyang521
  • 2014年10月29日 13:56
  • 461

WPF系列之应用程序生命周期

摘要: WPF是微软最新的图形用户界面技术,从2003年公之于众(当时开发代号Avalon),其革命性的创建软件的方式便引起了高度关注,特别是对于使用Windows Form和GDI开发的人员。时至...
  • jianxin160
  • jianxin160
  • 2011年08月14日 22:39
  • 3330

微信小程序把玩(五)页面生命周期

这里只要熟悉页面的基本生命周期即可,业务在指定生命周期函数内书写。以下是官网给出的生命周期函数方法和状态图 上面的生周期函数图对于做Android 或者IOS的来书理解起来应该不是难事,具体怎么掌握只...
  • u014360817
  • u014360817
  • 2016年09月24日 15:40
  • 16549

Android应用程序的生命周期

描述:程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android从启动到停止的全过程。==程序的生命周期是由Android系统进行调度和控制的。 ① 程序生命周期 ...
  • G1036583997
  • G1036583997
  • 2014年03月07日 14:48
  • 8146

Windows Phone应用程序的生命周期与墓碑机制

由于WP7系统刚推出时并不支持多任务(即便是现在,第三方应用从前台切到后台之后也不能继续运行,关于后台任务,本文暂不讨论),为了达到程序切换时让用户觉得程序在后台继续运行的效果,WP7推出了墓碑机制,...
  • chen108
  • chen108
  • 2012年05月15日 20:52
  • 664

Servlet运行机制与生命周期

前面的例子可以看出,一个Servlet在服务器上最多只会驻留一个实例,在此期间会涉及到HttpServlet的方法,如下所示: 在编写Servlet程序时,都是让它继承HttpS...
  • suwu150
  • suwu150
  • 2016年05月24日 09:03
  • 6488

iOS开发之应用的生命周期以及界面的生命周期

1.应用的生命周期 应用的生命周期的方法一般写在AppDelegate中 各个程序运行状态时代理的回调: - (BOOL)application:(UIApplication *)applicat...
  • aa19920630
  • aa19920630
  • 2015年02月06日 14:54
  • 1300

ASP.NET应用程序和页面生命周期

【译】ASP.NET应用程序和页面生命周期 为何翻译此文   一、此文是Code Project社区2010年4月ASP.NET板块的最佳文章,说明了此文的份量;   二、锻炼自己的英文技术文章...
  • farmwang
  • farmwang
  • 2016年06月19日 08:50
  • 455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:应用程序生命周期(墓碑机制(程序和页面))
举报原因:
原因补充:

(最多只允许输入30个字)