Приложение WP7 не загружается после нажатия кнопки «Пуск» и «Назад»

У меня возникли некоторые проблемы с моим приложением и возобновлением его работы, скажем, после получения и чтения текста.

В настоящее время он работает на заблокированном экране без проблем, но когда я нажимаю кнопку «Пуск» и делаю что-то, а затем нажимаю «Назад», чтобы возобновить работу приложения, сообщение о возобновлении появляется на несколько секунд, исчезает, а затем черный экран остается на 15+ секунд, а затем приложение больше не появляется.

Я бы сказал, что это может быть связано со временем загрузки страницы, но у моего приложения при запуске нет проблем со временем загрузки. Я не реализовал код в активированных/деактивированных разделах в App.xaml.cs, поэтому это не могло на него повлиять.

Кто-нибудь знает, что здесь может быть не так? Любая помощь приветствуется.

Небольшое обновление: после тестирования быстрое последовательное нажатие кнопок Windows и Back работает. но когда вы оставляете время для того, чтобы процесс умер, он просто становится черным. Я пробовал те же тесты в примерах приложений, и они возобновлялись без какого-либо кода в app.xaml.cs.


person James Mundy    schedule 26.05.2011    source источник


Ответы (3)


Звучит так, как будто вы видите разницу между деактивацией и завершением при захоронении и работе под отладчиком.

Краткое резюме:
При захоронении ваше приложение сначала деактивируется, а затем МОЖЕТ быть закрыто. (В случае завершения ваше приложение удаляется из памяти.) Если вы тестируете захоронение, просто нажав «Пуск» (клавиша Windows), а затем «назад», вы МОЖЕТЕ не завершить работу. (Есть и другие обстоятельства, и они тоже различаются для некоторых выбирающих.)

В любом случае:
Если ваше приложение работало под отладчиком и перезапущено после завершения, оно будет ждать перезапуска отладчика. Это то, что он делает, когда показывает пустой экран. Чтобы перезапустить отладчик в этом состоянии, просто снова выберите «Начать отладку» в VS. Это не запускает новый экземпляр приложения (как некоторые ожидают), а перезапускает отладчик и подключается к работающему экземпляру приложения. Вот как вы можете продолжить отладку того же экземпляра приложения после захоронения.

person Matt Lacey    schedule 27.05.2011
comment
Спасибо, Мэтт, я обнаружил, что процесс не завершается, если вы быстро нажимаете «Пуск» и «Назад», но когда я немного оставляю его, а затем нажимаю «Назад», экран становится черным, как я сказал, но если в режиме отладки, и я делаю это, отладчик не не понимаю, что соединение было потеряно, поэтому я не могу возобновить отладку. Он нормально работает с примерами приложений, но не с тем, над которым я работаю. - person James Mundy; 27.05.2011
comment
изучив его еще немного, я заставил отладчик записать, что происходит, когда приложение не удалось запустить и при возобновлении, и оно проходит через тот же раздел кода, что и при запуске приложения, но затем отображает: Исключение первого шанса типа «System.FormatException» произошло в mscorlib.dll Исключение первого шанса типа «System.Net.WebException» произошло в System.Windows.dll «taskhost.exe» (управляемый): загружен «System.SR.dll» первый шанс исключение типа «System.TimeoutException», произошедшее в System.ServiceModel.dll, отображаются все. Я понятия не имею, что происходит. - person James Mundy; 27.05.2011
comment
обнаружил, что в моем app.xaml.cs была проблема, которая воссоздавала корневой фрейм каждый раз, когда приложение перезапускалось. - person James Mundy; 27.05.2011

Попробуйте протестировать этот сценарий в Visual Studio. Отладьте проект, затем нажмите «Пуск», затем «Назад»; VS должен продолжить выполнение, и вы сможете определить, что происходит не так.

person Richard Szalay    schedule 26.05.2011
comment
Спасибо, после этого несколько раз выводилось следующее: В mscorlib.dll возникло первое случайное исключение типа «System.FormatException». - person James Mundy; 26.05.2011
comment
Следуйте трассировке стека для этого исключения, пока не увидите написанный вами метод, а затем поставьте там точку останова. - person Richard Szalay; 26.05.2011

Когда вы нажимаете кнопку «Пуск», ваше приложение становится захороненным. Когда вы нажимаете «Назад», он снова активируется.

Состояние приложения не сохраняется, когда приложение становится захороненным. Вы несете ответственность за сохранение и восстановление данных.

Вот серия сообщений в блоге, объясняющих захоронение:

person Olivier Payen    schedule 26.05.2011
comment
спасибо, сейчас буду их читать. чтобы телефон не помнил, на какой странице вы были, когда вы вышли из приложения? - person James Mundy; 26.05.2011
comment
Да, приложение вернется на последнюю страницу, НО на новый экземпляр. - person Olivier Payen; 27.05.2011