在介绍生命周期前,我们先了解两个相关的概念。

1、墓碑机制:WP8与Android采用的真后台机制不同,WP8采用的是墓碑机制。一旦从当前应用程序离开(非退出),该应用会被墓碑化,这样可以更好的管理(节省)内存,当然在节省的同时,失去一些便捷性:应用程序无法一直在后台运行。

在墓碑化的过程中,系统保留了应用程序的状态以及程序中访问过的各个页面的状态,此外还保存了页面回退栈。当用户返回一个被墓碑化的app时,这个app会重建,自动返回离开时的页面,之前的页面状态仍然被保留。

2、休眠机制(Dormant):休眠状态是指App被deactivated,但未进入墓碑化的过渡状态。处于这个状态的app若被返回(activated),可以不做任何处理就恢复页面状态信息。这是微软相对7.0增加的内容,为了增强用户体验而设计。我们刚刚离开App又立马返回时可以很清楚的感觉到不用像7.0时代那样等待了。(当然这要看开发者是否做了相应的代码。就目前来说,“爱贴吧”可以秒回,“微博”要稍微等一会,“微信”要等蛮久....这里不得不吐槽下大腾讯对WP的消极作风)

接下来,我们就来说说WP8应用的生命周期了。

如图1.1所示,WP8应用程序的生命周期可以通过4个事件来进行描述。

(图1.1 应用程序生命周期模型 图源来自Nokia NEIC WP8培训)

一、Launching 事件。 当用户从应用程序列表或者开始菜单进入App的时候触发此事件。该事件的触发意味着一个新的应用程序实例被创建。在应用程序的生命周期里此事件只会被执行一次。一般在其响应函数里读取存储的一些配置信息而不要放置耗时较大的操作(如Web服务)。

二、Activated 事件。当用户导航返回到应用程序时,该事件被触发。第一次进入应用时并不会触发该事件。在其响应函数中,我们可以放置一些恢复状态的代码。

三、Deactivated 事件。当应用程序从前台转入后台(非关闭),就会触发此事件。锁屏、启动一个启动器或选择器,按开始按钮键都会触发此事件。这时可以在代码里保存相关数据。

四、Closing 事件。当应用程序退出的时候会执行此事件。通常情况下,当程序处于主页面且用户点击返回按钮时触发。这时候,应用程序才会真正被终止。该事件只会被执行一次。在其响应函数中,可以放置一些保存代码,将一些信息保存到隔离存储里。

下图1.2为VS2012中App模板默认生成的代码。(位于App.xaml.cs文件中)

图1.2应用生命周期四个事件对应的响应代码

WP8开发札记(一)WP8应用生命周期管理的更多相关文章

  1. wp8.1 Study6: App的生命周期管理

    一.概述 应用程序的生命周期详解可以参照Windows8.1开发中msdn文档http://msdn.microsoft.com/library/windows/apps/hh464925.aspx ...

  2. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  3. 【iOS开发】iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...

  4. Java开发学习(十一)----基于注解开发bean作用范围与生命周期管理

    一.注解开发bean作用范围与生命周期管理 前面使用注解已经完成了bean的管理,接下来将通过配置实现的内容都换成对应的注解实现,包含两部分内容:bean作用范围和bean生命周期. 1.1 环境准备 ...

  5. Akka(2):Actor生命周期管理 - 监控和监视

    在开始讨论Akka中对Actor的生命周期管理前,我们先探讨一下所谓的Actor编程模式.对比起我们习惯的行令式(imperative)编程模式,Actor编程模式更接近现实中的应用场景和功能测试模式 ...

  6. Salesforce 应用生命周期管理

    应用程序生命周期管理 一个Salesforce系统可以有多个版本,最常见的有: production版本:终端用户实际使用的版本 sandbox版本:沙盒环境,用于开发.测试等 在对Salesforc ...

  7. [转载]DevOps建立全生命周期管理

    全生命周期管理(ALM)领域作为企业DevOps实践的总体支撑,应该说是DevOps领域中最为重要的实践领域,也是所有其他实践的基础设施.现在很多企业都非常重视CI/CD自动化工具的引入和推广,但是对 ...

  8. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  9. 从大厂DevOps工具链部署,看现代产品的生命周期管理

    目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...

  10. 4-K8S 部署Java应用及应用程序生命周期管理

    1.在kubernetes中部署应用程序流程 准备项目源码-->编译构建-->产出war包,打包到镜像中-->推送到镜像仓库 获取源代码是开发人员提交代码的代码托管地址,有Git.S ...

随机推荐

  1. OCP-1Z0-051-名称解析-文章32称号

    32. Which CREATE TABLE statement is valid? A. CREATE TABLE ord_details          (ord_no NUMBER(2) PR ...

  2. linq 分组求和

    static void Main()         {             DataTable dt = new DataTable();             dt.Columns.Add( ...

  3. Quartz使用-入门使用(java定时任务实现)

    注:这里使用的是Quartz1.6.5版本号(包:quartz-1.6.5.jar) //測试main函数 //QuartzTest.java package quartzPackage; impor ...

  4. FlexBuilder远程调试WEB应用

    Flex使用的开发工具FlexBuiler 3,web server使用apache. 1 第一次安装IE相应flashplayer的debug版本号,下载Flash player 11.8安装,下载 ...

  5. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  6. printf详解

    用了这么多年c了,今天想编个小程序练练手,忽然发现对于printf这个函数并不甚了解.上网查了查,下面是对printf()的详解: 函数原型: #include <stdio.h> int ...

  7. HashMap之Hash碰撞冲突解决方案及未来改进

    说明:参考网上的两篇文章做了简单的总结,以备后查(http://blogread.cn/it/article/7191?f=wb  ,http://it.deepinmind.com/%E6%80%A ...

  8. Object.prototype.toString &amp; typeof

    Object.prototype.toString & typeof Object.prototype.toString 获取某个对象属于哪种内置类型 typeof  得到某个对象的类型 差别 ...

  9. Retrofit相关资料

    高速Android开发系列网络篇之Retrofithttp://www.w3c.com.cn/%E5%BF%AB%E9%80%9Fandroid%E5%BC%80%E5%8F%91%E7%B3%BB% ...

  10. 使用Windows2003创建DNS服务器 - 进阶者系列 - 学习者系列文章

    Windows 2003的DNS服务器的配置还是比较简单的.下面简要介绍下DNS服务器的配置. 1.    打开控制面板,选择 添加删除Windows组件,选择 网络服务 ,选择 详细信息,选择 域名 ...