UWP Page.OnNavigatedFrom () не вызывается, когда приложение завершается - PullRequest
0 голосов
/ 01 ноября 2018

Я переопределил метод Page.OnNavigatedFrom() в приложении UWP. Метод вызывается, когда я перехожу на другую страницу. Согласно документации , Page.OnNavigatedFrom() составляет:

Вызывается сразу после того, как страница выгружена и больше не является текущий источник родительского кадра.

Однако, когда я закрываю приложение, OnNavigatedFrom() страницы не вызывается. Не следует ли завершить приложение, выгружая страницу?

// Not called when app is terminated
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
   base.OnNavigatedFrom(e);
} 

Обновление

Я ценю комментарии. Чтобы быть более понятным, я должен был сказать, что я закрывал приложение, а не закрывал приложение. (Закрытие приложения сначала приостанавливается, а затем завершает приложение.) Я обнаружил, что при вызове Frame.GetNavigationState() в OnSuspending() вызывается 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();
}

1 Ответ

0 голосов
/ 02 ноября 2018

Вызывается сразу после выгрузки страницы и больше не является текущим источником родительского фрейма.

Я думаю, вы неправильно поняли документ. OnNavigatedFrom() метод будет вызываться, когда страница выгружена и больше не является текущим источником фрейма . Это жизненный цикл страницы, доступный только в сценарии стека навигации.

Но завершается концепция жизненного цикла приложения . и его приоритет выше, чем жизненный цикл страницы.

Когда вы закрываете приложение uwp, будет вызываться обработчик события OnSuspending. Если вы хотите сохранить данные страницы, вы можете подписаться на это событие в классе страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...