Правильная обработка ключа захоронения и возврата в целях производительности?

Есть ли лучший метод для правильной обработки захоронения и возврата ключа?

Как указано в документе MSDN, вы должны сохранять временные данные в OnNavigatedFrom метод. Хорошо, поэтому код для сохранения состояний при захоронении очищен.

Но теперь, если вы нажмете клавишу возврата, также будет вызван метод OnNavigatedFrom , и если вы не добавите дополнительные проверки, вы сначала сохраните состояний в словарь, и вскоре после этого страница будет уничтожена. И PhoneApplicationPage тоже. Государственный словарь. Таким образом, код сохранения полностью потрачен впустую время ЦП, диска и батареи .

Вот что я сделал, чтобы предотвратить это:

    protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        // when navigating back
        if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
        {
            backKeyPressed = true;
        }
    }

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (backKeyPressed)
        {
            // Don't save states on back key!
            backKeyPressed = false;     // set it anyway
            return;
        }

        // Tombstoning
        // save objects
        this.SaveState("text", someText);
        ...
    }

Напоминаем: OnNavigatingFrom будет только вызываться при переходе от страницы / назад, но не при захвате приложения.

Боковое примечание: Показанный код охватывает только страницы, по которым можно только переходить назад. Вот почему я добавил backKeypressed в OnNavigatingFrom . Вам нужны дополнительные проверки, может ли страница перейти на другую страницу.

  1. Есть ли лучший способ сделать это для каждой создаваемой вами страницы?
  2. Мне действительно нужно добавить переменную backKeyPressed и проверять каждую страницу, которую я создаю?
  3. Разве фреймворк не должен предоставлять что-то нам, разработчику, поэтому мы не будем Не нужно ли сильно об этом беспокоиться?

Что вы думаете об этом?

РЕДАКТИРОВАТЬ:

Обновлен вопрос, чтобы сделать его более ясным.

5
задан Buju 6 April 2011 в 14:02
поделиться