• Windows 8 系列(二):Metro Style 应用程序生命周期(Metro Style Application Life Cycle)


    今天为大家介绍Windows 8 Metro Style 应用程序的生命周期。Windows 8 Metro Style 应用程序与Windows Phone应用程序同宗同源,所以应用程序的生命周期也是大同小异,首先我们来看看windows phone 7应用程序的生命周期

    简要一点就是:启动程序  --〉  程序运行  --〉 休眠 (可选)--〉 墓碑(可选) --〉 关闭

    与Windows Phone相似,windows 8 Metro Style 应用程序的生命周期如下图所示:

                           

    这个是windows 8 developer preview 版本的Metro Style生命周期,目前Windows 8 Beta版本的,在此基础上增加了用户结束应用程序,即:Running app ---(User Terminate)---> ClosedByUser。

    如果你对Windows 8 Metro Style 应用程序有所了解的话,就会发现系统没有提供给用户这样的功能,而我们的Metro Style 应用程序的设计规范里又不允许我们设置退出或者关闭功能(像Windows 7中的右上角的"X" ),那我们如何手动关闭Metro Style应用程序呢??

    还记得我们在玩一些客户端小游戏时用快捷键“Alt + F4” 退出游戏吗?对,我们就是用这个快捷键,可以手动关闭应用程序。

    protected override void OnLaunched(LaunchActivatedEventArgs args)
    {
    // TODO: Create a data model appropriate for your problem domain to replace the sample data
    var sampleData = new SampleDataSource();

    if (args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
    {
    //TODO: Load state from previously suspended application
    }

    // Create a Frame to act navigation context and navigate to the first page,
    // configuring the new page by passing required information as a navigation
    // parameter
    var rootFrame = new Frame();
    rootFrame.Navigate(typeof(GroupedItemsPage), sampleData.ItemGroups);

    // Place the frame in the current Window and ensure that it is active
    Window.Current.Content = rootFrame;
    Window.Current.Activate();
    }

    从上面的代码中可以看到,在应用程序再次被启动时,OnLaunched事件参数中可以得到一个ApplicationExecutionState枚举类型,从中可以得到应用程序在这之前是什么状态。

    此枚举类型的详细内容:

    namespace Windows.ApplicationModel.Activation
    {
    // Summary:
    // Specifies the current execution state of the app.
    public enum ApplicationExecutionState
    {
    // Summary:
    // The app is not running.
    NotRunning = 0,
    //
    // Summary:
    // The app is running.
    Running = 1,
    //
    // Summary:
    // The app is suspended.
    Suspended = 2,
    //
    // Summary:
    // The app was terminated after being suspended.
    Terminated = 3,
    //
    // Summary:
    // The app was closed by the user.
    ClosedByUser = 4,
    }
    }

    以上只是自己的一点心得,如果有什么意见和建议,欢迎大家提出。

    同时欢迎大家跟我一起探讨,我们一起进步。

    多谢jesse hao的提醒,我把第一张图加了一部分,程序在休眠的时候也是会触发OnNavigatedFrom事件

  • 相关阅读:
    Javascript文件加载:LABjs和RequireJS
    【译】前端开发者的基本要求
    正则基础之——NFA引擎匹配原理
    JavaScript 设计模式 安全沙箱模式
    jsdoc_toolkit
    JS判断手机浏览器
    JavaScript:Object.prototype.toString方法的原理
    FullCalendar 官方文档翻译2
    浏览器缓存机制
    jQuery.extend 函数详解
  • 原文地址:https://www.cnblogs.com/lihaiyin/p/2392538.html
Copyright © 2020-2023  润新知