学习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)---线程 多线程 并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在 ...
随机推荐
- hud1856 并查集
Problem Description Mr Wang wants some boys to help him with a project. Because the project is rathe ...
- sql Server 发送邮件 错误类型及原因
设置警报 在[常规项]中做以下设置 新建警报 设置警报名称 选择数据库 选择严重性 在[响应项]中可以做以下设置 选择要邮件通知的操作员 可以设置执行一个警报作业 在选项 ...
- python_list和tuple互转
Python中,tuple和list均为内置类型, 以list作为参数将tuple类初始化,将返回tuple类型 tuple([1,2,3,4]) list->tuple 以tuple做为参数, ...
- mysql中group_concat函数用法
该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT ...
- iOS开发总结-图片左右滑动浏览
// // PicViewController.m // BJ // // Created by shirenfeng on 16/9/13. // Copyright © 2016年 com.zyb ...
- Android 颜色渲染(八) SweepGradient扫描/梯度渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(八) SweepGradient 扫描/梯度渲染 为什么什么叫扫描渲染呢? 相信大家都看过雷达扫描的 ...
- LCA在线算法ST算法
求LCA(近期公共祖先)的算法有好多,按在线和离线分为在线算法和离线算法. 离线算法有基于搜索的Tarjan算法较优,而在线算法则是基于dp的ST算法较优. 首先说一下ST算法. 这个算法是基于RMQ ...
- 判断IMEI或MEID是否合法
/*----------------------------------------------- * 判断此字串所代表的IMEI或MEID是否合法 * @param imei * @author H ...
- Windows7如何在安全模式下卸载驱动(亲测)
在桌面“我的电脑”上点鼠标右键,选择“属性”,“硬件”,“设备管理器”,找到“显示卡选项”,打开前面的“+”,然后按鼠标右键,选择“卸载”就可以了. (亲测,主板驱动卸载成功启动)
- IDL计算儒略日
遥感数据还有一些文章中使用数据的时候,经常使用儒略日(Julian day),即计算该天是一年中的第几天.正好有时间,就用IDL写了段儿小代码,方便使用. ;+ ; :Author: caoz ...