Вызывается ли OnNavigatedTo, когда вы включаете экран и приложение оживает?

Я столкнулся со странной ситуацией, которую хочу отладить в своем приложении Windows Phone 8.1, и я не уверен, в какие моменты вызывается OnNavigatedTo.

Очевидно, что он вызывается (и я проверил, отслеживая его с помощью отладчика), когда вы обычно переходите к представлению.

Мое сомнение возникает в другом моменте, который я хочу проверить, давайте назовем его «Вы разбудили свое приложение, и экран был выключен».

Мой вопрос: Когда вы включаете экран и снимаете защитную пленку, вызывается ли функция "OnNavigatedTo" или нет?

Согласно некоторым руководствам, которые я где-то читал, так и должно быть.

Судя по моим трассировкам Debug.Writeline, похоже, что нет.

Мне нужно проверить какое-то условие и выполнить некоторый код до/когда появится представление, и я не могу сделать это правильно.

PS: существует ли какое-то другое альтернативное событие, которое я должен использовать, чтобы справиться с ситуацией «Это представление становится видимым / сфокусированным после включения экрана» вместо «OnNavigatedTo»?

Заранее спасибо.


person Isaac    schedule 02.04.2015    source источник


Ответы (1)


В среде выполнения Windows Phone 8.1 (магазин приложений) OnNavigatedTo вызывается только во время навигации. Он не вызывается после выхода из приостановки — вы можете прочитать ссылку здесь в MSDN:

перед событием Suspending вызывается событие OnNavigatedFrom, но при возобновлении OnNavigatedTo не вызывается

В вашем случае при блокировке экрана приложение приостанавливается, после возобновления OnNavigatedTo не вызывается. Если вы ищете какие-то события, которые могут быть вызваны, взгляните на события Window.Activated и Window.VisibilityChanged.

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

person Romasz    schedule 02.04.2015
comment
Когда я читал ваш ответ, у меня возникло ощущение, что вы попали в точку :) Как только я начал изменять свой ошибочный код, я просто добавил новые ловушки в событие Windows.Current.Activated. Как только я изменил то, что мне нужно было изменить, мой код, наконец, выполнился именно там, где я хотел. Спасибо! - person Isaac; 07.04.2015