在Windows 10 UWP中处理暂停,恢复和激活

时间:2015-07-27 08:01:21

标签: c# windows-store-apps windows-8.1 windows-10

在Windows 8.1通用应用程序中,使用APP模板中包含的vector ans NavigationHelper.cs类处理暂停/恢复模式。 Windows 10 UWP应用程序中似乎没有这些类。有没有办法处理暂停/恢复状态?

2 个答案:

答案 0 :(得分:4)

社区正在开发一个有趣的框架(但我认为Jerry Nixon, Andy Wigley等),名为Template10。 Template10有一个Bootstrapper类,可以覆盖OnSuspendingOnResuming个虚拟方法。我不确定是否有使用Template10进行暂停/恢复的确切示例,但想法似乎是使App.xaml.cs inherit from this Bootstrapper类,以便您可以轻松覆盖我提到的方法。

sealed partial class App : Common.BootStrapper
{
    public App()
    {
        InitializeComponent();
        this.SplashFactory = (e) => null;
    }

    public override Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
    {
        // start the user experience
        NavigationService.Navigate(typeof(Views.MainPage), "123");
        return Task.FromResult<object>(null);
    }

    public override Task OnSuspendingAsync(object s, SuspendingEventArgs e)
    {
        // handle suspending
    }

    public override void OnResuming(object s, object e)
    {
        // handle resuming
    }
}

答案 1 :(得分:2)

以上解决方案仅适用于安装Template10的用户。 通用解决方案是,

将这些行粘贴到App.xaml.cs

的构造函数中
        this.LeavingBackground += App_LeavingBackground;

        this.Resuming += App_Resuming;

看起来像这样

    public App()
    {
        this.InitializeComponent();
        this.Suspending += OnSuspending;
        this.LeavingBackground += App_LeavingBackground;

        this.Resuming += App_Resuming;
    }

这些是方法,虽然你可以按TAB,它们会自动生成。

    private void App_LeavingBackground(object sender, LeavingBackgroundEventArgs e)
    {

    }

    private void App_Resuming(object sender, object e)
    {

    }

方法LeavingBackground和这里未提及的方法EnteredBackground被新添加到uwp。

在这些方法之前,我们将使用恢复和暂停来保存和恢复ui,但现在推荐的工作位置就在这里。这些是在应用程序恢复之前执行工作的最后位置。所以关于这些方法的工作应该是小的ui或者其他的东西,比如重新构造值这些陈旧的,因为长期持有的方法会在恢复时影响应用启动时间。

来源 Windows dev materialWindoes dev material 2

谢谢,祝你有个美好的一天。