学习WindowsPhone 2013/12/22
菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容:http://blog.csdn.net/column/details/wp-comming.html?page=3 ,稍微看了一下,写的还是非常好的,很详实。
开发工具:Visual Studio XXX for Windows Phone,其中的XXX代表相应的版本比如2010,2102,2013等等,下载这个工具就直接安装就好了,不需要其他的其他的什么工具,非常方便。
WindowPhone的生命周期:
一般来说,在学习一门新的移动语言的时候,都应该从这个地方开始入手,首先要了解你在什么时候能够干什么事情,大致的了解一个程序在手机上运行时的各种状态,在这些状态中需要做那些特殊的处理,这是很有必要的。
WindowsPhone的生命周期的几个主要状态:
- 启动(Launching)和关闭(Closing)
- 激活(Activating)和取消激活(DeActivating)
- 休眠(Dormant)和墓碑(Tombstoned)
主要状态就是以上几个状态,其中还会涉及到快速恢复、页面导航和后退栈等等内容。
先来个稍微简单点的示意图:

1、程序启动时,会调用Application_Launching方法会被调用,程序结束时Application_Closing会被调用,就是上图中Running以上的部分。
2、Activated事件和Deactivated事件
这两个事件是相对应的,举个例子
:你正在操作A软件,突然有个电话打过来了,这时候你手机上展示的就是待接电话那个页面,你的A程序的Deactivated事件就被触发了,当你打完电话退出电话界面再次回到A软件时,这时Activated事件就被触发了。
需要注意的是:在程序第一次启动的时候,是不会触发Activated事件的,而且,当这两个事件被触发时,你有可能需要进行相应的数据保存或者数据恢复的操作,因为WindowsPhone系统只是保存了你的程序的运行页面,而不会保存页面中的内容
3.休眠(Dormant)和墓碑(Tombstoned)
Dormant:从上图更可以看出,要达到休眠Dormant状态必须先触发Deactivated事件,然后程序才会进入到休眠状态,当然用户可以恢复休眠的程序,但是不能完全保证一定能从休眠的状态中恢复过来(有可能,该程序被系统回收了).
当程序被休眠时,必须尽可能的在Application_Deactivated中保存数据因为程序可能会被关闭,如果用户不通过长按Back回到那个程序,Application_Deactivated就相当于Application_Closing。你的程序有5秒中的机会去执行保存数据的操作。
Tombstoned:一个程序会和其他程序一起在内存中休眠,如果操作系统的内存不够用了会释放最先的程序的缓存状态,这个过程叫做“墓碑化”。页面导航历史和缓存状态都被墓碑了的程序维护着。
当一个休眠了的程序恢复时,缓存状态会重新加载,程序会回到他离开时的那个页面,所有的对象和他们的状态都在内存里,你可能需要写一些逻辑来重置依赖于时间或网络的调用代码。
当一个墓碑了的程序恢复时,它会重启离开时的页面,但是所有的程序状态会丢失,包括他们的的对象和状态,你需要重新加载控件数据。
休眠程序的时候会涉及到另外一个概念:状态字典
休眠程序的状态信息都存在状态字典里,代码如下:
PhoneApplicationService.Current.State["URL"] = "www.cnblogs.com";
可以在Application_Deactivated函数里存储,然后再页面激活时读取。
所以Application_Deactivated有两件事情要做,保存数据以防程序不能重新激活,保存状态数据以保证程序恢复到正确的状态。
导航和后退栈:
WindowsPhone 程序的导航模型使用起来很方便,可以通过链接到其他页面,可以通过后退键到上一个页面。
WindowsPhone系统维护着这样 一个后退的栈(注意栈的特性),当跳转到另一个页面的时候,当前的页面会被压入到栈中,当后退时, 后退到的那个页面会出栈。
当程序deactivated的时候,系统会保持后退栈,包括当前的页面,但只有页面地址被保存,页面内容并不保存,程序必须在 OnNavigatedTo和OnNavigatedFrom事件里构建页面和保存数据。

学习WindowsPhone 2013/12/22的更多相关文章
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
- js 日期2015/12/22/16/45替换2015-12-22 16:45格式
js 日期2015/12/22/16/45替换2015-12-22 16:45格式 利用正则分组: function toChange(date) { var reg = /(\d+)\/(\d+)\ ...
- JavaSE学习总结第12天_API常用对象2
12.01 Scanner的概述和构造方法原理 Scanner类概述:JDK5以后用于获取用户的键盘输入 构造方法:public Scanner(InputStream source) publi ...
- 深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Bra ...
- 强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces)
强化学习读书笔记 - 12 - 资格痕迹(Eligibility Traces) 学习笔记: Reinforcement Learning: An Introduction, Richard S. S ...
- 12.22笔记(关于CALayer//Attributes//CALayer绘制图层//CALayer代理绘图//CALayer动画属性//CALayer自定义子图层//绘图pdf文件//绘图渐变效果)
12.22笔记 pdf下载文件:https://www.evernote.com/shard/s227/sh/f81ba498-41aa-443b-81c1-9b569fcc34c5/f033b89a ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Flutter学习笔记(12)--列表组件
如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...
- JavaSE学习笔记(12)---线程
JavaSE学习笔记(12)---线程 多线程 并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在 ...
随机推荐
- zabbix 编译
yum -y install xml* libxml* net-snmp net-snmp* php-bcmath ./configure --enable-server --enable-agent ...
- ICSharpCode.SharpZipLib压缩解压
一.使用ICSharpCode.SharpZipLib.dll: 下载地址 http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.asp ...
- docker 镜像和容器的批量清理
镜像和容器的清理 删除所有运行中的容器 $ docker kill $(docker ps -q) 删除所有停止的容器 $ docker rm $(docker ps -a -q) 删除所有没有tag ...
- SQLite的 SQL语法总结
SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. 如下语法表格中,纯文本用蓝 ...
- oracle:变长数组varray,嵌套表,集合
创建变长数组类型 ) ); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...
- php 两个数组是否相同,并且输出全面的数据,相同的加一个字段标示
方法一: $date是数组,数组中有字段id,name; $data1是数组,数组中有字段sort_id,name; 所以要通过$date[$i]['id']==$data1[$j]['sort_id ...
- python版本简历
- Premature optimization is the root of all evil.
For all of we programmers,we should always remember that "Premature optimization is the root of ...
- clientX 属性.
Syntax: event.clientX The clientX event attribute returns the horizontal coordinate (according to th ...
- hadoop-0.20-集群搭建___实体机通过SSH访问基于VM安装的Linux
不得不说LZ在最开始搭建hadoop的时候,由于VM中的网段配置和本地IP地址没有配置好, 所以一直都在使用 VM的共享文件夹的功能, 以至于集群搭建好之后,只有namenode主机可以实现共享的功能 ...