zoukankan      html  css  js  c++  java
  • 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事件

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/lihaiyin/p/2392538.html
Copyright © 2011-2022 走看看