zoukankan      html  css  js  c++  java
  • Windows 8 生命周期管理(3)

    15.2 应用状态处理

    下面将介绍Metro风格的应用中,激活,挂起,恢复的具体方法,以及响应应用的生命周期事件。

    15.2.1 应用激活

    首先,重写OnLaunched处理函数。当应用被激活时,处于某些原因会发送Activated事件。Windows.UI.Xaml.Application类定义了一些方法,可以用来重写处理函数,处理不同激活类型的情况,有几种激活类型带有具体的可重写方法,对于其他的激活类型,重写OnActivated方法即可。

    下面的代码为应用程序定义了一个类。

    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    x:Class="AppName.App" >

    重写的OnLaunched方法,在用户启动应用程序时都会调用。“LaunchActivatedEventArgs”参数包含应用之前的状态和激活参数值,代码如下。

    using System;

    using Windows.ApplicationModel;

    using Windows.ApplicationModel.Activation;

    using Windows.UI.Xaml;

    namespace AppName

    {

    public partial class App

    {

    async protected override void OnLaunched(LaunchActivatedEventArgs args)

    {

    EnsurePageCreatedAndActivate();

    }

    // 如果之前没有创建,就创建一个MainPage,并激活窗口。

    private MainPage EnsurePageCreatedAndActivate()

    {

    if (Window.Current.Content == null)

    {

    Window.Current.Content = new MainPage();

    }

    Window.Current.Activate();

    return Window.Current.Content as MainPage;

    }

    }

    }

    之后,如果应用是被挂起然后终止的,还原应用数据。当用户切换到被终止的应用时,系统发送一个激活事件(Activated event),将“Kind”属性值设为“Launch”,“PreviousExecutionState”属性值设为“Terminated”或“ClosedByUser”,应用则会加载其存储的应用数据,并刷新其所展示内容。

    async protected override void OnLaunched(LaunchActivatedEventArgs args)

    {

    if (args.PreviousExecutionState == ApplicationExecutionState.Terminated ||

    args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)

    {

    // TODO: 使用之前存储的应用的数据,供界面内容的展示

    }

    else

    {

    // TODO: 界面内容使用默认值

    }

    EnsurePageCreatedAndActivate();

    }

    如果“PreviousExecutionState”的值为“NotRunning”,应用存储数据失败,并且应用会像初始化启动一样重新开始。

  • 相关阅读:
    图像的点运算----底层代码与Halcon库函数
    C#跨线程调用控件
    Halcon学习笔记——条形码的定位与识别
    简单实用angular.js购物车功能
    xampp与Hbuilder、phpstorm配置
    AJAX实现简单的注册页面异步请求
    querySelector系列方法相比 getElementsBy 系列方法有什么区别?
    用了那么久的函数,你知道函数是怎么调用的吗??
    JS eval()函数的一些见解
    5分钟让你掌握css3阴影、倒影、渐变小技巧!
  • 原文地址:https://www.cnblogs.com/finehappy/p/2858205.html
Copyright © 2011-2022 走看看