学习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=

随便看看

Ansible入门

自动操作和维护常识操作和维护工作系统安装物理机、虚拟机包安装、配置、服务启动批处理操作程序发布监控操作和维护级别OS配置物理机PXE、,Cobbler(选择多版本操作系统)虚拟机ImageTemplates配置木偶(ruby)saltstack(python)检查cfengine...

Ubuntu 下查看CPU 信息命令

看看带有“处理器”一词的行数,即逻辑CPU的数量。因此,您可以在cmd下输入以下命令:cat/proc/cpuinfo|greproprocessor|wc-l因此,C++程序自然会想到使用strstr函数来查找processor关键字的出现次数。...

docker run hangs问题排查记录

1.故障描述过去两天遇到了一个非常奇怪的问题。现在完整的故障描述如下:1)首先,我的同事告诉我,K8S集群中的一个工作节点将其状态更改为NoReady,并且在节点kubelet_truntime的错误日志中发现了大量此类日志E060301:50:51.45511776268remote。go:332]ExecSync1f0e3ac13faf224129bc4...

SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程)

实现既然是实现通用下载接口,就要实现在后端配置一个下载文件的路径,在前端进行下载请求时传递要下载的文件的名字,然后请求公共接口进行下载。引入方式import{download}from"@/utils/badao";在utils下的badao.js中//通用下载方法exportfunctiondownload{window.location.href=bas...

Composer 的下载与安装

检查安装是否成功:使用cmd窗口中的composer--version或composer命令检查安装是否顺利。示例:~1.2需要注意的是,如果~作用于主要版本号,如~1,根据上述声明,Composer可以在版本1之后安装主要版本,但实际上~1将被视为~1.0,只能添加次要版本,而不能添加主要版本。示例:^1.2.3版本稳定性如果您没有明确指定版本稳定性,Co...

ubuntu 安装ncurses

ubuntu安装ncursesncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序都不使用了,不过如果要编译一些老程序,还经常遇得到。...