MS Swit 2012 - Windows 8 Application Lifecycle
-
Upload
- -
Category
Technology
-
view
799 -
download
0
description
Transcript of MS Swit 2012 - Windows 8 Application Lifecycle
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ
ЖИЗНЕННЫЙ ЦИКЛ METRO STYLE ПРИЛОЖЕНИЙ
Денис Резник, Digital Cloud Technologies
О Себе• Руководитель департамента веб-
разработки компании Digital Cloud Technologies
• Тренер Microsoft Innovation Center• Microsoft MVP• Microsoft Certified Trainer• Блог: http://reznik.uneta.com.ua • Твиттер: @DenisReznik• Email: [email protected]
Windows 8
Меняются правила игры
Активно одно приложение
Система управляет жизненным циклом
Активно много
Пользователь управляет жизненным
циклом
Жизненный цикл приложения
App 1 App 2 App 3Running
Suspended
Terminated
… App N
• Процесс не был запущен
• Показывается SplashScreen
Запуск (Launch)
DemoSplash Screen
Splash Screens в процессе активации
• Система предоставляет этот механизм для более цельного процесса перехода к приложению
• Показывается в то время, пока операционка запускает ваше приложение
• Отображается на протяжении процесса активации
• Цвет и картинка указываются в app manifest
• Приложение должно запуститься в течении 15 сек. Иначе оно будет завершено
Расширенный Splash Screens
• Некоторые приложения грузятся дольше
• Создавайте своё первое представление идентичное сплэш скрину
• Splash Screen API может использоваться для рендеринга сплэш скрина вручную
Приложение запущено
Активация запуском через тайл
Пользователь кликает по
тайлу
args.Kind Показывается Splash Screen
activated event
Изменение способа запуска приложения
Запуск с помощью ярлыка
Запуск через тайл, поиск, шару, и т.д.
Контракты
App
AppWindows
Активация через контракты
• Приложение активируется через контракт• Запуск, поиск,
ShareTarget, и т.д..
• Приложение должно инициализировать специфические для контракта действия
• Предоставляется контекст
Running App
launch
shareTarget
activated
запуск
search
• Launch• Search• Share target• Cached file• Camera• Contact picker• Device
Активация (Activation)
• File• File open picker• File save picker• Print task• Protocol
Активация (Activation)
Активация приложенияasync protected override void OnLaunched(LaunchActivatedEventArgs args){ switch (args.Kind) { case ActivationKind.Launch: break; case ActivationKind.Search: break; case ActivationKind.ShareTarget: break; }}
DemoSearch
• Переключение пользователем
• Низкий заряд батареи
Остановка (Suspend)
Suspend – взгляд изнутри
• Suspended приложения не обслуживаются ядром системы
• Никакого потребления ресурсов CPU, Disk или Network
• Все потоки приостанавливаются
Suspend – взгляд изнутри
• Приложение остаётся в памяти• Система проверяет что
приложение не находится в критической секции, что может привести к возникновению взаимоблокировок
• Приложение немедленно возобновляет свою работу, когда пользователь активирует его
• Сессионные данные• Настройки пользователя• И т.д.
Данные приложения (Application Data)
• Локальное хранилище• Settings• Files
• Удалённое хранилище (roaming)
• Временное хранилище
Хранение данных приложения
DemoSuspend
• Переключение пользователем
• Батарея заряжается
Восстановление (Resume )
• Alt + F4
Завершение (Close)
• Процесс завершается
• Нет никаких уведомлений об этом событии
Завершение (Terminate)
Когда возникает аварийное завершение?
• Системе нужно больше памяти• Пользователь переключает аккаунты• Завершение работы системы• Ошибка приложения
Сценарий
Best Practices работы с состоянием
Что делать…
Инкрементальное сохранение данных пользователяСохранить где юзер находился (например открытая страница)Восстановить сессию юзера так, как будто он не покидал приложенияНичего не делать
Работа с приложением Suspending
Activated
Resuming
Работа приложения
Running
App
SuspendedApp
suspending Terminated
App
Low Memory
Code gets to runNo code
runs App not running
resuming
Есть 5 сек. на обработку
Приложение не
уведомляется перед
terminate
Приложение уведомляется
о resume
Запуск приложения
Splash screen
Summary• Новая философия Windows базируется на
том как и когда приложения должно работать
• ОС управляет жизненным циклом приложения
• Активация приложения происходит посредством контрактов
• Сохраняйте ваше приложение живым:– Сохраняйте и восстанавливайте состояние– Используйте живые тайлы
Suspend best practices
• Сохраняйте состояние быстро – у вас есть всего 5 сек.
• Рассматривайте вариант завершения приложения – сохраняйте сессионные данные пользователя
• Не держите общие системные ресурсы (файлы, диски, сеть, и т.д.)
• Сохраняйте данные приложения инкрементально, до остановки
Activation best practices
• Активируйте приложение быстро!• Инициализируйте приложение• Отложите выполнение задач
настолько, насколько это возможно• Знайте, где пользователь находился• Показывайте расширенный splash
screen, если вам нужно более 15 сек. для активации
Полезные ссылки
• Жизненный цикл приложения (MSDN)
• http://www.buildwindows.com/• Building Metro style apps forum
СПАСИБО!
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ