Похоже, вам нужно обработать события OnDeactivated
и OnActivated
. Просто сделайте то же самое, что и в событии OnExiting
и в конструкторе. Я бы подумал, что образец сделает это, так как правильная обработка надгробного камня / регидрата - такая большая вещь для WP7, однако, похоже, ею пренебрегли. Обратите внимание, что OnActivated
НЕ вызывается при запуске приложения, а OnDeactivated
НЕ вызывается, когда приложение закрывается вручную или закрывается с помощью кнопки «Назад».
Обратите внимание, что области Activated
и Deactivated
также доступны как события на PhonApplicationServices.Current
, наряду с Launching
и Closing
, которые вызываются ТОЛЬКО в реальных ситуациях открытия и выхода.
EDIT
Хорошо, я забираю это. OnDeactivated
и OnActivated
не требуются. Похоже, что OnExiting запускается как для сценариев деактивации, так и для выхода. Я скачал пример, который вы связали (XNA4 WP7, не версия Mango) и поместил этот код в GameplayScreen
:
public override void Serialize(System.IO.Stream stream)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(string));
serializer.Serialize(stream, "Blah de blah blah");
base.Serialize(stream);
}
public override void Deserialize(System.IO.Stream stream)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(string));
string testStr = (string)serializer.Deserialize(stream);
base.Deserialize(stream);
}
Точка останова показывает, что метод Deserialize работает правильно, поэтому ваша проблема должна заключаться в том, как вы применяете свои загруженные данные, или, возможно, вы редактировали другой код, который их нарушил.