zoukankan      html  css  js  c++  java
  • 《Windows Phone 8 Development Internals》读书笔记-1-2-1-连载

    第二章:应用程序模型和导航(1)

    本章核心问题:

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

    一、 应用程序的生命周期

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

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

    作为应用程序开发者需要注意以下两个事件:

    1. 关闭事件:当用户在应用程序开始界面点击返回按键的时候,应用程序终止,接收关闭事件,杀死实例对象,关闭应用程序本身
    2. 失活状态:
    • 墓碑:应用程序是失效的,但是实例是保存的,没有任务程序在内存中运行,但是系统记得关键点,可以保证它被再次激活
    • 应用程序快速恢复:应用程序是失效的,但不是墓碑状态,然后又快速激活(怎么好理解这个状态呢?比如说你进入一个应用程序,然后持续按返回按钮,应用程序界面会缩放,当你再次点击应用程序界面,界面会放大,再次回到应用程序中)

    当我们利用VS创建一个WP应用程序时,会自动生成一些模板代码和生命周期事件,包括:启动、激活、失活、关闭。当然用户也可以重写OnNavigatedFrom方法和OnNavigatedTo方法。

    PS:

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

    事件/方法

    说明

    APP

    启动

    创建应用程序新实例

    APP

    失活

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

    APP

    激活

    重新加载应用程序状态

    APP

    关闭

    保存状态和清理垃圾

    所有

    OnNavigatedFrom

    用户即将离开当前页

    所有

    OnNavigatedTo

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

    应用程序正常终止:

    应用程序生命周期

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

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

    应用程序生命周期2

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

    墓碑状态:

    应用程序生命周期3

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

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

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

    失活:

    应用程序生命周期4

    图1-4:应用程序失活

    应用程序生命周期5

    图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("用户即将离开当前页");
            }

    运行进入模拟器:

    过程如下

    1-1

    图1-6:启动应用程序

    1-2

    图1-7:应用程序失活

    1-3

    图1-8:激活应用程序

    1-4

    图1-9:应用程序关闭

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

  • 相关阅读:
    测试PHP-FPM的工作流中的疑惑点
    摘要
    Centrifugo简单试用
    react-redux的基本用法
    PHP中使用ElasticSearch(二)
    PHP中使用ElasticSearch(一)
    Vue中的状态管理器
    Laravel数据库迁移
    快速搭建一个vue开发环境
    使用cURL尝试ElasticSearch
  • 原文地址:https://www.cnblogs.com/Foregoer/p/3865565.html
Copyright © 2011-2022 走看看