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

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. 基于Http替补新闻WebService数据交换

    该系统的工作之间的相互作用.随着信息化建设的发展,而业界SOA了解并带来低TOC(总拥有成本)其他优势.越来越多的高层次的信息使用者关注. 这里暂且不提SOA这种架构规划.在系统间集成协议简单的讨论. ...

  2. 通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷

    原文:通过MyEclipse工具直接操作数据库,执行sql语句,方便快捷 通过MyEclipse操作数据库,执行sql语句使我们不用切换多个工具,直接工作,方便快捷.效果如下: 步骤1:通过MyEcl ...

  3. 用windows性能监视器监控sqlserver的常见指标

    用windows性能监视器监控sqlserver的常见指标   上边文章中提到win的性能监视器是监控数据库性能必备的工具,接下来我就给大家介绍一些常见的监控指标,其实无非就是磁盘,cpu,内存等硬件 ...

  4. 把VBScript的函数迁移到C#.NET

    原文:把VBScript的函数迁移到C#.NET VBScript 5.6 Functions C# code Abs System.Math.Abs Array New Object() { } A ...

  5. PHP 4:从Login进一步看到的

    原文:PHP 4:从Login进一步看到的 我们已经在PHP 3:从Login界面谈PHP标记谈到了PHP标记,不过其页面代码有一句 require_once('bookmark_fns.php'); ...

  6. Tomcat7.0更改默认的路径来访问自己的项目

    如何使自己的项目没有输入:localhost:8080/项目名称/index.html 能够访问. 步骤,如下面的 : 找到tomcat ---  config----server.xml 选中右键编 ...

  7. TRIGGER的使用(修改SP自动触发)

    CREATE TRIGGER [trg_save_change_SP] ON DATABASE FOR CREATE_PROCEDURE, ALTER_PROCEDURE,DROP_PROCEDURE ...

  8. 【转】【Android UI设计与开发】第07期:底部菜单栏(二)Fragment的详细介绍和使用方法

    原始地址:http://blog.csdn.net/yangyu20121224/article/category/1431917/1 由于TabActivity在Android4.0以后已经被完全弃 ...

  9. android的版本控制

    在一个团队项目中,项目的版本控制,一方面促进团队的协同能力,另一方面提高项目的进度 即使一个人的项目也最好使用SVN这样的版本控制,可以清楚的知道自己的修改的代码,和项目进度等.合理的托管,也让优秀的 ...

  10. Re-installation failed due to different application signatures.的解决方案

    有时在安装不同版本apk文件时会出现Re-installation failed due to different application signatures.这样的提示 主要原因是安装的apk程序 ...