Тестирование приостановки / возобновления в приложениях UWP с помощью Template10

Я работаю над приложением Windows 10 UWP и использую библиотеку Template10. В модели представления главной страницы моего приложения у меня есть этот код, чтобы попытаться обработать приостановку и возобновление:

    public override void OnNavigatedTo(object parameter, NavigationMode mode, IDictionary<string, object> state)
    {
        if (state.Any())
        {
            NumberOfQuizQuestions = (int)state["QuizQuestions"];
            state.Clear();
        }
    }

    public override Task OnNavigatedFromAsync(IDictionary<string, object> state, bool suspending)
    {
        if (suspending)
        {
            state["QuizQuestions"] = this.NumberOfQuizQuestions;
        }
        return base.OnNavigatedFromAsync(state, suspending);
    }

Мой вопрос: как я могу проверить, что это работает правильно? Когда я запускаю приложение в отладчике, у меня отображается панель инструментов жизненного цикла, поэтому, когда я нажимаю «Приостановить и выключить», код в OnNavigatedFromAsync() запускается и suspending истинно, что кажется правильным. Но как я ни пытаюсь запустить приложение, state в OnNavigatedTo() пусто. Ожидается ли это?


person gregstoll    schedule 07.12.2015    source источник
comment
Код, который вы разместили, верен, и я протестировал ваш код с минимальным шаблоном проекта, я могу получить QuizQuestions из state при запуске после приостановки и выключения. Вы также можете попробовать шаблон проекта Minimal, чтобы убедиться, что он работает.   -  person Jay Zuo    schedule 08.12.2015
comment
Долгий путь, но попробуйте отладить код, обычно возобновление следует сначала подобрать в загрузчике (github.com/Windows-XAML/Template10/blob/master/)   -  person Depechie    schedule 08.12.2015
comment
Спасибо @ JayZuo-MSFT! У меня это сработало с шаблоном проекта Minimal, поэтому я думаю, что я делаю что-то не так в одном из методов в App.xaml.cs. Но это большой шаг!   -  person gregstoll    schedule 09.12.2015


Ответы (3)


Я быстро и надежно тестирую / отлаживаю сценарий возобновления работы на ПК с Windows 10 следующим образом:

  1. В Visual Studio запустите приложение без подключенного отладчика (ctrl-F5)
  2. В приложении перейдите в состояние, в котором вы хотите приостановить работу приложения.
  3. Переключитесь на Visual Studio и запустите приложение в отладчике (F5 - Debug, или F10 - Step Over или F11 - Step Into).

Когда вы запускаете сеанс отладки на шаге 3, Visual Studio сначала скомпилирует и развернет ваше приложение. Конечно, поскольку приложение запущено, его нужно сначала приостановить, а затем завершить.

Затем приложение запускается снова с присоединенным отладчиком, и предыдущее состояние выполнения «прекращено». Разместите свои точки останова и выполните отладку.

person Kris Vandermotten    schedule 08.12.2015

Вы можете развернуть свое приложение на эмуляторе Windows 10 Mobile или на реальном устройстве. Затем вы можете просто запустить приложение, перейти на начальный экран и вернуться к нему через некоторое время, чтобы вызвать различные состояния. Это не нарушит ваш сеанс отладки.

person Ferdinand von den Eichen    schedule 08.12.2015
comment
Хм, я подумал, что если отладчик все еще подключен, это означает, что процесс на самом деле не завершился, а это значит, что мой код сохранения / восстановления не нужно запускать. - person gregstoll; 09.12.2015

Спасибо всем. Проблема в том, что Template10 использует идентификатор плитки, чтобы определить, происходит ли запуск с основной или дополнительной плитки - если имя плитки - «Приложение», это основная плитка. В этом случае я использовал обновленный проект из Windows Phone 8.0, и по какой-то причине в моем Package.appxmanifest был тег Application с идентификатором, отличным от «App».

person gregstoll    schedule 03.01.2016