使用 Template10 在 UWP 应用程序中测试 suspend/resume
Testing suspend/resume in UWP apps with Template10
我正在开发 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);
}
我的问题是:如何测试它是否正常工作?当我在调试器中启动应用程序时,会显示生命周期工具栏,因此当我单击 "Suspend and shutdown" 时,OnNavigatedFromAsync()
中的代码运行并且 suspending
为真,这似乎是正确的。但无论我如何尝试启动应用程序,state
在 OnNavigatedTo()
中都是空的。这是预期的吗?
您可以将您的应用程序部署到 Windows 10 移动模拟器或实际设备。然后您可以 运行 应用程序,转到您的开始屏幕并在一段时间后 return 到它以触发不同的状态。这不会中断您的调试会话。
我快速可靠地 test/debug 在 Windows 10 PC 上恢复场景的方式如下:
- 在 Visual Studio 中,运行 您的应用程序未附加调试器 (ctrl-F5)
- 在应用程序中,导航到您要暂停应用程序的状态。
- 切换到 Visual Studio 并在调试器下启动应用程序(F5 - 调试,或 F10 - 单步执行或 F11 - 单步执行)。
当您在第 3 步开始调试会话时,Visual Studio 将首先编译和部署您的应用程序。当然,由于应用是运行ning,所以必须先挂起再终止。
然后再次启动应用程序,附加调试器,之前的执行状态是"terminated"。放置断点并调试。
谢谢大家。问题是 Template10 使用磁贴的 ID 来确定启动是来自主磁贴还是辅助磁贴 - 如果磁贴的名称是 "App",则它是主磁贴。在这种情况下,我使用的是 Windows Phone 8.0 的升级项目,出于某种原因,我的 Package.appxmanifest 有一个应用程序标签,其 ID 不是 "App"。
我正在开发 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);
}
我的问题是:如何测试它是否正常工作?当我在调试器中启动应用程序时,会显示生命周期工具栏,因此当我单击 "Suspend and shutdown" 时,OnNavigatedFromAsync()
中的代码运行并且 suspending
为真,这似乎是正确的。但无论我如何尝试启动应用程序,state
在 OnNavigatedTo()
中都是空的。这是预期的吗?
您可以将您的应用程序部署到 Windows 10 移动模拟器或实际设备。然后您可以 运行 应用程序,转到您的开始屏幕并在一段时间后 return 到它以触发不同的状态。这不会中断您的调试会话。
我快速可靠地 test/debug 在 Windows 10 PC 上恢复场景的方式如下:
- 在 Visual Studio 中,运行 您的应用程序未附加调试器 (ctrl-F5)
- 在应用程序中,导航到您要暂停应用程序的状态。
- 切换到 Visual Studio 并在调试器下启动应用程序(F5 - 调试,或 F10 - 单步执行或 F11 - 单步执行)。
当您在第 3 步开始调试会话时,Visual Studio 将首先编译和部署您的应用程序。当然,由于应用是运行ning,所以必须先挂起再终止。
然后再次启动应用程序,附加调试器,之前的执行状态是"terminated"。放置断点并调试。
谢谢大家。问题是 Template10 使用磁贴的 ID 来确定启动是来自主磁贴还是辅助磁贴 - 如果磁贴的名称是 "App",则它是主磁贴。在这种情况下,我使用的是 Windows Phone 8.0 的升级项目,出于某种原因,我的 Package.appxmanifest 有一个应用程序标签,其 ID 不是 "App"。