|
Рассказ о мультизадачности в Windows Phone 7 наделал много шума среди будущих пользователей и разработчиков для этой мобильной платформы. В итоге за две недели я получил больше сотни комментариев из различных источников (в блоге, на сторонних ресурсах, в почте, в IM). В основном авторы этих комментариев были недовольны отсутствием многозадачности в Windows Phone 7. Давайте разберемся как же все-таки обстоят дела на самом деле. Главное, что хочется сказать – это многозадачность в Windows Phone 7 есть (дочитайте до конца и убедитесь, что это действительно так). Процессы в операционной системе исполняются параллельно и могут обрабатывать задачи пользователя. Путаницу вызывает то, что Windows Phone 7 приостанавливает приложения Silverlight и XNA при переключении на другое приложение или при возникновении какого-либо события (например, звонок по телефону). Более того, приложение может быть и вовсе удалено из памяти, если операционной системе будет недостаточно ресурсов (состояние приложение при этом не теряется и будет восстановлено операционной системой при следующем запуске приложения). Однако, как я уже писал, команда разработчиков в данный момент работает над созданием службы для выполнения фоновых задач. Это означает, что вы сможете написать собственную фоновую службу и запустить ее на Windows Phone 7. Эта служба будет работать как фоновый процесс и не будет прерываться операционной системой. При этом, судя по всему, приложение Silverlight или XNA сможет взаимодействовать с вашей фоновой службой и управлять ею. Таким образом, для приложений, которым важна именно работа в фоне предлагается модель разработки, при которой приложение на Silverlight/XNA будет некоторой графической оболочкой, а фоновая служба – некоторой логикой, которая работает постоянно. В таком случае приостановка/выгрузка именно приложения Silverlight/XNA очень логично, поскольку это всего лишь пользовательский интерфейс для работающей в фоне службы (которая, напомню, не приостанавливается). Кроме того, нужно не забывать о том, что в Windows Phone 7 существуют уведомление (Push Notifications), которые позволяют по внешнему событию восстановить работу и приложения Silverlight/XNA, т.е. по сути запустить нашу графическую оболочку. Еще одним подтверждением наличия многозадачности является то, что эмулятор, поставляемый в составе Windows Phone Developers Tools CTP на данный момент не реализует полностью функциональность приостановки приложений в момент переключения. Это означает, что если мы напишем небольшое приложение, которое по таймеру увеличивает счетчик и отображает его на форме, запустим приложение и переключимся на другое приложение, то таймер все равно будет работать. Естественно эта недоработка версии CTP будет исправлена в последующих выпусках. Однако сейчас это дает право убедиться в том, что на уровне операционной системы многозадачность поддерживается в полном объеме. Примеры задач, требующих фонового исполнения, которые смогли привести мои собеседники: * клиенты IM (Jabber, ICQ, MSN, ..); * запись трека GPS (другие сценарии работы с GPS); * антивирусное ПО; * проигрывание музыки; * агенты для корпоративного использования; * загрузка почты; * будильник; * автоматическое обновление социальных служб (например, Twitter) при изменении условий (например, местоположения). Как видно, предложенный подход к организации многозадачности позволяет покрыть каждый из этих сценариев. Это означает, что Windows Phone 7 есть полноценная многозадачность, а не “немного многозадачности”. Если в этом списке нет какого-либо случая, который невозможно реализовать используя приведенную концепцию – дайте нам знать. На этом, я надеюсь, мифы об отсутствии многозадачности в Windows Phone 7 будут развенчаны, а будущие пользователи Windows Phone 7 останутся довольными. Автор/Разработчик: sergey.zwezdin Оф. сайт/Источник: http://blog.zwezdin.com/ru/183
|