Есть ли лучший метод для правильной обработки захоронения и возврата ключа?
Как указано в документе 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
. Вам нужны дополнительные проверки, может ли страница перейти на другую страницу.
backKeyPressed
и проверять каждую страницу, которую я создаю? Что вы думаете об этом?
РЕДАКТИРОВАТЬ:
Обновлен вопрос, чтобы сделать его более ясным.