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

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. 关于tcp封装http协议

    如果tcp中没有上层协议,那么就是简单的数据包的传输,如果tcp中有上层协议,那么,当客户端把tcp包发给server的时候,server端的socket收到数据包后,从中分离出应用层协议,交给上层继 ...

  2. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  3. What is HHVM?

    What is HHVM? HHVM is an open-source virtual machine designed for executing programs written in Hack ...

  4. LCD开发之汉字显示

    一.LCD显示原理 利用液晶制成的显示器称为LCD,根据驱动方式可分为静态驱动.简单矩阵驱动以及主动矩阵驱动3种.当中,简单矩阵型又可再细分扭转向列型(TN)和超扭转式向列型(STN)两种,而主动矩阵 ...

  5. 多种语言socket编程集锦—win32

    原文 http://www.blogjava.net/huyi2006/articles/263831.html 借此地方整理以下socket编程的多种语言的实现,socket可以跨平台的通信,因此多 ...

  6. 关于Java中List对象的分页思想,按10个或者n个数对list进行分组

    try { List<String> timelist = DateUtils.getDateListBySETime("2015-08-01", "2015 ...

  7. Performing User-Managed Database-18.4、Restoring Datafiles and Archived Redo Logs

    18.4.Restoring Datafiles and Archived Redo Logs 假定介质故障损坏的一个或多个数据文件,数据文件必须恢复损坏的文件之前恢复. 该位置是不是想恢复原来姿势. ...

  8. Mvc 导出 Excel

    Mvc 导出 Excel 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总结.希望 ...

  9. Linux的文件夹配置

    学习linux我个人认为首先须要了解清楚在系统中没给目录的详细事干什么的才行,这样在以后的学习其中以及在使用linux系统的过程中才会事半功倍. /bin 主要内容是系统的运行文件,可是/bin中的运 ...

  10. 异步提交form的时候利用jQuery validate实现表单验证

    异步提交form的时候利用jQuery validate实现表单验证相信很多人都用过jquery validate插件,非常好用,并且可以通过下面的语句来自定义验证规则    // 电话号码验证    ...