C# 应用程序终止时未调用UWP Page.OnNavigatedFrom()

C# 应用程序终止时未调用UWP Page.OnNavigatedFrom(),c#,uwp,C#,Uwp,我已在UWP应用程序中重写Page.OnNavigatedFrom方法。当我导航到另一个页面时,将调用该方法。根据,Page.OnNavigatedFrom是: 在页面卸载后立即调用,并且不再是 父帧的当前源 但是,当我终止应用程序时,不会调用页面的OnNavigatedFrom。终止应用程序不应该卸载页面吗 // Not called when app is terminated protected override void OnNavigatedFrom(NavigationEventAr

我已在UWP应用程序中重写Page.OnNavigatedFrom方法。当我导航到另一个页面时,将调用该方法。根据,Page.OnNavigatedFrom是:

在页面卸载后立即调用,并且不再是 父帧的当前源

但是,当我终止应用程序时,不会调用页面的OnNavigatedFrom。终止应用程序不应该卸载页面吗

// Not called when app is terminated
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
   base.OnNavigatedFrom(e);
} 
使现代化 我感谢你的评论。更清楚地说,我应该说我正在关闭应用程序,而不是终止应用程序。关闭应用程序会先挂起应用程序,然后终止应用程序。我发现在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应用程序时,将调用OnSuspending事件处理程序,如果您要保存页面数据,可以在page类中订阅此事件

在页面卸载后立即调用,并且不再是父帧的当前源

我想你误解了这份文件。OnNavigatedFrom方法将在页面卸载时调用,并且不再是帧的当前源。页面生命周期仅在导航堆栈场景中可用

但是,终止是一个概念。并且其优先级高于页面生命周期


当您终止uwp应用程序时,将调用OnSuspending事件处理程序,如果您想保存页面数据,可以在page类中订阅此事件。

OnNavigatedFrom将在您关闭应用程序时调用。你能不能再分享一些显示你导航逻辑的代码。你不能终止UWP应用程序,你只能暂停它。应用程序在页面为当前页面时终止。它从未卸载过。用户从未离开过它。如果需要,您可以让页面在挂起时保存状态。当您关闭应用程序时,将调用OnNavigatedFrom。你能不能再分享一些显示你导航逻辑的代码。你不能终止UWP应用程序,你只能暂停它。应用程序在页面为当前页面时终止。它从未卸载过。用户从未离开过它。如果需要,可以让页面在暂停时保存状态。