处理应用恢复
重要的 API
了解系统恢复应用时刷新 UI 的位置。 本主题中的示例为恢复事件注册事件处理程序。
注册恢复事件处理程序
注册以处理 恢复 事件,该事件指示用户已离开应用,然后返回该事件。
partial class MainPage
{
public MainPage()
{
InitializeComponent();
Application.Current.Resuming += new EventHandler<Object>(App_Resuming);
}
}
Public NonInheritable Class MainPage
Public Sub New()
InitializeComponent()
AddHandler Application.Current.Resuming, AddressOf App_Resuming
End Sub
End Class
MainPage::MainPage()
{
InitializeComponent();
Windows::UI::Xaml::Application::Current().Resuming({ this, &MainPage::App_Resuming });
}
MainPage::MainPage()
{
InitializeComponent();
Application::Current->Resuming +=
ref new EventHandler<Platform::Object^>(this, &MainPage::App_Resuming);
}
刷新显示的内容和重新获取资源
用户切换到另一个应用或桌面后,系统会暂停应用几秒钟。 当用户切换回应用时,系统会恢复你的应用。 当系统恢复应用时,变量和数据结构的内容与系统暂停应用之前的内容相同。 系统将还原它离开的应用。 对用户来说,它看起来好像应用已在后台运行。
当应用处理 恢复 事件时,你的应用可能已暂停数小时或几天。 它应刷新应用暂停时可能已过时的任何内容,例如新闻源或用户的位置。
这也是还原应用暂停时释放的任何独占资源的好时机,例如文件句柄、相机、I/O 设备、外部设备和网络资源。
partial class MainPage
{
private void App_Resuming(Object sender, Object e)
{
// TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
}
}
Public NonInheritable Class MainPage
Private Sub App_Resuming(sender As Object, e As Object)
' TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
End Sub
>
End Class
void MainPage::App_Resuming(
Windows::Foundation::IInspectable const& /* sender */,
Windows::Foundation::IInspectable const& /* e */)
{
// TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
}
void MainPage::App_Resuming(Object^ sender, Object^ e)
{
// TODO: Refresh network data, perform UI updates, and reacquire resources like cameras, I/O devices, etc.
}
注意
由于 Resuming 事件未从 UI 线程中引发,因此必须在你的处理程序中使用调度程序,调度对你的 UI 的任何调用。
注解
当应用附加到 Visual Studio 调试器时,它将不会挂起。 但是,你可以从调试器中暂停它,然后向其 发送 Resume 事件,以便可以调试代码。 确保“调试位置”工具栏可见,然后单击“挂起”图标旁边的下拉列表。 然后选择“ 恢复”。
对于Windows Phone应用商店应用,恢复事件始终跟在 OnLaunched 之后,即使应用当前已暂停,用户也会从主磁贴或应用列表中重新启动应用。 如果当前窗口上已设置内容,应用可以跳过初始化。 可以检查 LaunchActivatedEventArgs.TileId 属性,以确定应用是从主要磁贴还是辅助磁贴启动,并基于该信息确定是否应提供新的应用体验或恢复应用体验。