设为首页 收藏本站
查看: 989|回复: 0

《Windows Phone 8 Development Internals》读书笔记-1-2-1-连载

[复制链接]

尚未签到

发表于 2015-5-23 05:58:30 | 显示全部楼层 |阅读模式
第二章:应用程序模型和导航(1)


  本章核心问题:



    • 应用程序的生命周期
    • 微软基于页面的Silverlight应用程序框架的导航模型


  一、 应用程序的生命周期
  WP平台的最大优势在于应用程序有着相同且统一的工作方式,所有的应用程序都遵循着相同的准则,这些准则给用户带来了良好的体验。具体包括:


  • 同一时间可以有多个应用运行,但是只能有一个应用程序是活动的可以出现在屏幕上;
  • 同一时间只能有一个活动页面,活动页面是可以相互切换的;
  • 用户可以点击Win键由活动的应用程序回到主界面;
  • 用户点击返回按键(左按键)可以返回上一屏幕,如果到达最开始的界面那么再次点击返回按键就退出应用程序;
  • 几乎所有的WP应用程序采用单实例存储(例外:电子邮件采用多实例方案)
  作为应用程序开发者需要注意以下两个事件:


  • 关闭事件:当用户在应用程序开始界面点击返回按键的时候,应用程序终止,接收关闭事件,杀死实例对象,关闭应用程序本身
  • 失活状态:


  • 墓碑:应用程序是失效的,但是实例是保存的,没有任务程序在内存中运行,但是系统记得关键点,可以保证它被再次激活
  • 应用程序快速恢复:应用程序是失效的,但不是墓碑状态,然后又快速激活(怎么好理解这个状态呢?比如说你进入一个应用程序,然后持续按返回按钮,应用程序界面会缩放,当你再次点击应用程序界面,界面会放大,再次回到应用程序中)
  当我们利用VS创建一个WP应用程序时,会自动生成一些模板代码和生命周期事件,包括:启动、激活、失活、关闭。当然用户也可以重写OnNavigatedFrom方法和OnNavigatedTo方法。
  PS:


  • 当用户即将离开当前页时,将调用OnNavigatedFrom 方法;
  • 当用户从其它页面导航到该页面时调用OnNavigatedTo 方法。

  类

  事件/方法

  说明

  APP

  启动

  创建应用程序新实例

  APP

  失活

  应用程序失活,进程被杀死,可以保持程序的状态

  APP

  激活

  重新加载应用程序状态

  APP

  关闭

  保存状态和清理垃圾

  所有

  OnNavigatedFrom

  用户即将离开当前页

  所有

  OnNavigatedTo

  用户从其它页面导航到该页面

  
  应用程序正常终止:
DSC0000.png

图1-1:正常关闭应用程序生命周期

应用程序停止-快速恢复:

DSC0001.png

图1-2:应用程序停止-快速恢复生命周期

墓碑状态:

DSC0002.png

图1-3:应用程序墓碑状态生命周期

PS:如果对WP墓碑机制不太了解的朋友可查阅相关资料。说的简单点,就是手机上一个任务被迫中断时(如有电话打入),系统记录下当前应用程序的状态后,(像把事件记录在墓碑上一样),然后中止程序。当需要恢复时,根据“墓碑”上的内容,将程序恢复到中断之前的状态。

对比图1-2和1-3之间的异同,有助于更好地理解WP各个状态的生命周期


  失活:
DSC0003.png

图1-4:应用程序失活

DSC0004.png

图1-5:应用程序激活

  我们现在创建一个WP8应用程序,体验下各个过程:
  打开App.xaml.cs修改代码如下



       // 应用程序启动(例如,从“开始”菜单启动)时执行的代码
// 此代码在重新激活应用程序时不执行
private void Application_Launching(object sender, LaunchingEventArgs e)
{
Debug.WriteLine("应用程序启动");
}
// 激活应用程序(置于前台)时执行的代码
// 此代码在首次启动应用程序时不执行
private void Application_Activated(object sender, ActivatedEventArgs e)
{
Debug.WriteLine("应用程序激活");
}
// 停用应用程序(发送到后台)时执行的代码
// 此代码在应用程序关闭时不执行
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
Debug.WriteLine("应用程序停止");
}
// 应用程序关闭(例如,用户点击“后退”)时执行的代码
// 此代码在停用应用程序时不执行
private void Application_Closing(object sender, ClosingEventArgs e)
{
Debug.WriteLine("应用程序关闭");
}
  打开MainPage添加代码:



        protected override void OnNavigatedTo(NavigationEventArgs e)
{
Debug.WriteLine("用户从其它页面导航到该页面");
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Debug.WriteLine("用户即将离开当前页");
}
  运行进入模拟器:
  过程如下
DSC0005.png

图1-6:启动应用程序

DSC0006.png

图1-7:应用程序失活

DSC0007.png

图1-8:激活应用程序

DSC0008.png

图1-9:应用程序关闭

PS:对于没有XAML基础的友友建议抽点时间看看XMAL,这对以后的WP开发学习很有帮助。更新日期:周一~周五

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69637-1-1.html 上篇帖子: 微软一站式示例代码整理 下篇帖子: Windows 8 安装 AutoCAD 2014
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表