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事件

posted @ 2012-03-12 22:22  lihaiyin  阅读(2989)  评论(21编辑  收藏  举报