使用Template10测试UWP应用程序中的暂停/恢复

时间:2015-12-07 22:43:23

标签: visual-studio windows-10 uwp

我正在使用Windows 10 UWP应用,而我正在使用Template10 library。在我的应用程序主页面的视图模型中,我有这个代码来尝试处理暂停和恢复:

    public override void OnNavigatedTo(object parameter, NavigationMode mode, IDictionary<string, object> state)
    {
        if (state.Any())
        {
            NumberOfQuizQuestions = (int)state["QuizQuestions"];
            state.Clear();
        }
    }

    public override Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending)
    {
        if (suspending)
        {
            state["QuizQuestions"] = this.NumberOfQuizQuestions;
        }
        return base.OnNavigatedFromAsync(state, suspending);
    }

我的问题是:如何测试这是否正常?当我在调试器中启动应用程序时,我显示了生命周期工具栏,因此当我单击“暂停并关闭”OnNavigatedFromAsync()运行中的代码并且suspending为真时,这似乎是正确的。但无论我如何尝试启动该应用,stateOnNavigatedTo()都为空。这是预期的吗?

3 个答案:

答案 0 :(得分:4)

我在Windows 10 PC上快速可靠地测试/调试恢复方案的方式如下:

  1. 在Visual Studio中,运行没有附加调试器的应用程序(ctrl-F5)
  2. 在应用程序中,导航到要暂停应用程序的状态。
  3. 切换到Visual Studio并在调试器下启动应用程序(F5 - Debug,或F10 - Step Over或F11 - Step Into)。
  4. 在步骤3中启动调试会话时,Visual Studio将首先编译和部署您的应用程序。当然,由于应用程序正在运行,它必须先挂起然后终止。

    然后再次启动应用程序,并附加调试器,并且先前的执行状态为“已终止”。放置断点并进行调试。

答案 1 :(得分:0)

您可以将应用程序部署到Windows 10移动模拟器或实际设备。然后你可以运行应用程序,转到你的启动屏幕并在一段时间后返回它以触发不同的状态。这不会破坏您的调试会话。

答案 2 :(得分:0)

谢谢大家。问题在于Template10使用磁贴的ID来确定启动是来自主要还是次要磁贴 - 如果磁贴的名称是&#34;应用&#34;,它是&#34; s主要的瓷砖。在这种情况下,我使用的是Windows Phone 8.0中的升级项目,由于某种原因,我的Package.appxmanifest有一个Application标签,其ID不是&#34; App&#34;。