Windows 10 个移动 UWP - 慢退按钮

Windows 10 mobile UWP - slow back button

我有一个简单的用 c# 编写的应用程序,带有 sqlite 数据库。我意识到它在我的 phone 上运行不快。我很确定这个问题与按下内置后退按钮的功能有关。当我重复几次这个过程时:

打开新页面 -> return 按后退按钮返回上一页,应用程序启动速度变慢。

当我添加自己的后退按钮只是为了测试时,一切正常。

我主要基于这篇文章: http://www.wintellect.com/devcenter/jprosise/handling-the-back-button-in-windows-10-uwp-apps

如果你的背是 Phone 硬键,你可以处理事件。

link 是说 pc 并添加后退按钮,你应该

SystemNavigationManager.GetForCurrentView().BackRequested +=OnBackRequested;

    private void OnBackRequested(object sender, BackRequestedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;


        if (rootFrame?.CanGoBack==true)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
        else
        {
            Application.Current.Exit();
        }
    }
}

http://edi.wang/post/2016/2/1/windows-10-uwp-back-button-tricks http://blog.csdn.net/lindexi_gd/article/details/50618029

Open new page -> return to previous page by back button, the application starting slows down.

查看您的项目后,我发现了问题所在:您在每个页面上都注册了 SystemNavigationManager.GetForCurrentView().BackRequested +=OnBackRequestedSystemNavigationManager.GetForCurrentView().BackRequested 是一个应用程序范围事件。 当您在页面之间导航时,它不会释放事件处理程序。整个应用程序只需要注册一次。

因此,要解决此问题,您可以注释掉页面代码隐藏的所有 BackRequested 事件注册,只保留 App.xaml.cs.

中的事件注册

例如:在ProductsPage.xaml.cs中注释掉或删除以下行:

//SystemNavigationManager.GetForCurrentView().BackRequested += (s, e) =>
//{
//    // TODO: Go back to the previous page
//    Frame.Navigate(typeof(main1));
//};