【发布时间】:2018-11-03 00:38:12
【问题描述】:
我在 UWP 应用中覆盖了 Page.OnNavigatedFrom() 方法。当我导航到另一个页面时调用该方法。根据documentation,Page.OnNavigatedFrom()是:
页面卸载后立即调用,不再是 父框架的当前来源。
但是,当我终止应用程序时,不会调用页面的 OnNavigatedFrom()。不应该终止应用卸载页面吗?
// Not called when app is terminated
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
}
更新
感谢 cmets。更清楚地说,我应该说我是关闭应用程序,而不是终止应用程序。 (关闭应用程序首先挂起然后终止应用程序。)我发现在OnSuspending() 中调用Frame.GetNavigationState() 会导致即使用户关闭应用程序也会调用OnNavigatedFrom():
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
// Triggers currently loaded Page's OnNavigatedFrom
Frame frame = Window.Current.Content as Frame;
ApplicationData.Current.LocalSettings.Values["NavigationState"] =
frame.GetNavigationState();
deferral.Complete();
}
【问题讨论】:
-
OnNavigatedFrom将在您关闭应用程序时调用。您能否分享更多显示您的导航逻辑的代码。 -
您不能终止 UWP 应用,只能暂停它。 docs.microsoft.com/en-us/windows/uwp/launch-resume/…
-
应用程序在页面是当前页面时终止。它从未被卸载。用户从未离开过它。如果需要,您可以将页面保存为暂停状态。