学习WindowsPhone 2013/12/22

摘要:
开发工具:Visual Studio XXX for Windows Phone,其中XXX表示相应的版本,如201021022013等。只需下载此工具并直接安装即可。不需要其他工具。它非常方便。Windows Phone的生命周期中有几个主要状态:激活和停用休眠和墓碑的激活和停用。主要状态是上述状态,还包括快速恢复、页面导航和返回堆栈。

菜鸟一枚,只能边看别人的博客变学习来提升自己,参考博客内容: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)

主要状态就是以上几个状态,其中还会涉及到快速恢复、页面导航和后退栈等等内容。

先来个稍微简单点的示意图:

学习WindowsPhone 2013/12/22第1张

1、程序启动时,会调用Application_Launching方法会被调用,程序结束时Application_Closing会被调用,就是上图中Running以上的部分。

2、Activated事件和Deactivated事件

这两个事件是相对应的,举个例子学习WindowsPhone 2013/12/22第2张:你正在操作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第3张

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇谨防信息超载最短路径算法(I)-Floyed、dijkstra下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Vue 引入 svg文件

在图标显示中,通常使用font真棒图标库,它很简单,只需下载和导入即可。重要的显示:内联块;}2.在src目录下,添加一个名为icons的文件夹,并在icons文件夹下添加索引。js文件和svg文件夹,其中svg文件存储在svg文件夹中。...

avue 常用修改

1.搜索栅栏调整colum中对象的属性:searchSpan:4,column:[{label:"模型名称",prop:"name",search:true,searchSpan:4,},2.搜索框字段位置长度column:[{label:"流程标题23423432",searchLabelWidth:200,3.编辑页面,字段lable宽度设置labelW...

ES6学习之对象的遍历

写在前面的话:在es6中一共有五种遍历对象的方法,如下:for...infor...in循环遍历对象自身的和继承的可枚举属性。Object.getOwnPropertySymbolsObject.getOwnPropertySymbols返回一个数组,包含对象自身的所有Symbol属性的键名。其结果为:从结果可以看出对boy对象的遍历可以得到他的直接身的属性...

matlab中figure 创建图窗窗口

示例figure将f指定的图窗作为当前图窗,并将其显示在其他所有图窗的上面。figure;同时使用多个图窗创建两个图窗,然后创建一个线图。f1=figure;f2=figure;plot;将当前图窗设置为f1,使其成为下一个绘图的目标。figure;scatter;输入参数全部折叠f-目标图窗Figure对象目标图窗,指定为Figure对象。默认情况下,Nu...

【Mybatis-Plus】使用updateById()、update()将字段更新为null或者空

我检查了以下项目的配置,发现字段级别设置为NOT_由空引起。2不为空,但默认更新策略为Not_ NULL:解决方案1。设置全局字段策略加:classpath:#字段策略IGNORED:NOT_NULL:NOT_EMPTY:NOT_Null2。为所需字段设置单独的字段策略很麻烦。...

H3C交换机如何配置管理VLAN

1.输入“系统视图”(缩写为“sys”)进入系统配置模式[H3C]...