处理windows10 UWP中的挂起,恢复和激活

本文关键字:恢复 激活 挂起 windows10 UWP 处理 | 更新日期: 2023-09-27 18:04:44

在windows 8.1通用应用中,挂起/恢复模式是使用APP模板中包含的NavigationHelper.csSuspensionManager.cs类来处理的。这些类在windows 10的UWP应用程序中似乎不存在。我们是否有办法处理挂起/恢复状态?

处理windows10 UWP中的挂起,恢复和激活

社区正在开发一个有趣的框架(但我认为主要是Jerry Nixon, Andy Wigley等人),名为Template10。Template10有一个Bootstrapper类,其中包含可以覆盖的OnSuspendingOnResuming虚拟方法。我不确定是否有一个确切的例子来做暂停/恢复Template10,但这个想法似乎是使app . example .cs继承这个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
    }
}

上述解决方案仅适用于安装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开发材料;windows dev material 2

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