处理Windows 8生命周期

时间:2014-01-24 10:28:13

标签: windows-8 windows-runtime windows-8.1 lifecycle

我遇到了一个问题,我的应用程序有时会激活,有时会在我通过以下方式打开时启动:

var options = new Windows.System.LauncherOptions();
options.DisplayApplicationPicker = false;
bool success = await Windows.System.Launcher.LaunchFileAsync(sampleFile, options);

当应用程序重新激活时,它会显示相同的窗口 - 当我使用LaunchFileAsync访问外部应用程序时 - 这很不错。

但有时应用程序启动,我看到一个SplashPage和应用程序从MainPage开始。 - 我怎样才能使它返回页面,我在使用LaunchFileAsync时离开了?

示例:

我有一个MainPage和一个BlankPage1

所以这是我的暂停+关闭(终止)8个按钮的页面:

enter image description here

在应用程序被系统杀死时,在恢复0按钮上,我想保存我的视图XAML代码

enter image description here

1 个答案:

答案 0 :(得分:3)

完全取决于应用程序关闭的条件。它是由OS自动暂停和终止的吗?或者你自己关闭它? (例如:ALT-F4)

您可以在此处看到应用程序生命周期:http://msdn.microsoft.com/en-us/library/windows/apps/hh464925.aspx

如果您希望应用程序在用户关闭时恢复其先前的状态,我认为您可以在App.xaml.cs中的OnLaunched方法上启用它:

if (args.PreviousExecutionState == ApplicationExecutionState.Terminated
                || args.PreviousExecutionState == ApplicationExecutionState.ClosedByUser)
{
    try
    {
        await SuspensionManager.RestoreAsync();
    }
    catch (SuspensionManagerException)
    {
    }
}

然后,如果您的Page扩展了LayoutAwarePage,则有两个方法,SaveState和LoadState。 从框架导航或向框架导航时会自动调用这些方法(包括暂停/恢复/打开...)。

如果在SaveState方法中将数据保存在按钮后面,可以在LoadState方法中恢复它(从而重绘按钮)。这里有一个详细的例子:http://msdn.microsoft.com/en-us/library/windows/apps/hh986968.aspx