【问题标题】:UWP Slow back button on Local Machine本地计算机上的 UWP 慢退按钮
【发布时间】:2016-10-12 12:24:32
【问题描述】:

我正在写Windows 10 Universal App,需要添加普通方法

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


        if (rootFrame == null)
            return;

        if (rootFrame.CanGoBack && e.Handled == false)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }

        //debug
        int stop = 0;
    }

...在我的

App.xaml.cs

这将处理设备的后退按钮功能。

我在这里使用它:

       protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;

        // Do not repeat app initialization when the Window already has content,
        // just ensure that the window is active
        if (rootFrame == null)
        {
            // Create a Frame to act as the navigation context and navigate to the first page
            rootFrame = new Frame();

            rootFrame.NavigationFailed += OnNavigationFailed;
            rootFrame.Navigated += OnNavigated;

            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                // TODO: Load state from previously suspended application
            }

            // Place the frame in the current Window
            Window.Current.Content = rootFrame;

            // Register a handler for BackRequested events and set the
            // visibility of the Back button
            SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;

            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
                rootFrame.CanGoBack ?
                AppViewBackButtonVisibility.Visible :
                AppViewBackButtonVisibility.Collapsed;
        }

        if (rootFrame.Content == null)
        {
            // When the navigation stack isn't restored navigate to the first page,
            // configuring the new page by passing required information as a navigation
            // parameter
            rootFrame.Navigate(typeof(MainPage), e.Arguments);
        }

        // Ensure the current window is active
        Window.Current.Activate();
    }

它工作正常,但问题是当我在本地机器上构建和运行并使用后退按钮在页面之间导航时,它需要大约 5000 - 6000 毫秒(5-6 秒)才能导航到上一页。

当我调试它时,之间的延迟:

    if (rootFrame.CanGoBack && e.Handled == false)
    {
        e.Handled = true;
        rootFrame.GoBack();
    }

    //debug
    int stop = 0;

rootFrame.GoBack();和调试变量“停止”是 5,778 毫秒....,当我在移动模拟器或移动设备上运行它时,延迟时间减少到 ~100 毫秒

如果有人能够提供帮助,我将不胜感激。 谢谢。

【问题讨论】:

  • 你能分享你的演示吗?你在每个页面后面的代码中注册了BackRequested吗?

标签: c# visual-studio-2012 uwp windows-10 windows-10-universal


【解决方案1】:

我找到了导致延迟的原因,这是我的 MainPage 文件中的两个 SQL 事务方法,用于从 SQLite 数据库文件中获取大量数据。每次调用分页时都会调用它们。 (放置在页面构造函数中)。我把他们搬到单独的班级,一切似乎都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2015-10-20
    • 2010-11-05
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多