Отсутствие многозадачности в новой ОС от компании Microsoft продолжает вызывать жаркие споры и беспокоит многих девелоперов и простых пользователей. Рассмотрим этот вопрос подробнее, для чего обратимся к Windows Mobile 5.x, 6.x (Windows Phone Classic), в которой многозадачность была реализована.
В Windows Phone Classic несколько приложений могло быть запущено одновременно без приостановки, что и означает полную реализацию многозадачности. Аналогично работает операционная система на обычном ПК. Но давайте разберемся, а так ли необходима привычная для стационарных ОС многозадачность мобильной платформе.
Сценарий использования мобильного аппарата, как правило, отличается от работы на ПК. Приложения зачастую используются последовательно и на достаточно долгий промежуток времени. Пользователь, например, может загрузить калькулятор, просмотр документов PDF, Twitter, электронную почту, просмотр фото и так далее. При этом через какое-то время запущенные приложения продолжают «висеть», загружая память, а пользователь работает только в одном из них. Помимо памяти, эти ненужные на данный момент приложения расходуют батарею и загружают центральный процессор. Есть пользователи, которые понимают схему данного процесса и не запускают много приложений одновременно, однако так делают далеко не все. После всего вышесказанного снова попытаемся ответить на вопрос: а так ли нужна многозадачность в мобильной платформе?
Еще одна крайность в мобильных ОС – возможность запуска только одного приложения в конкретный момент времени. Это очень неудобно, т.к. зачастую пользователю требуется сразу несколько приложений. Например, вы захотите прочесть электронную почту, слушая при этом музыку при помощи проигрывателя, а такой возможности нет. Очень неудобно!
Разработчики корпорации Microsoft решили не вдаваться в крайности. В ОС Windows Phone 7 в определенном временном интервале может быть запущено только одно приложение, но некоторое количество системных программ способно работать в фоновом режиме. При переключении на другое окно, текущее приложение приостанавливается. Процесс может даже удалиться из памяти ОС, поэтому в Windows Phone 7 реализовано сохранение текущего состояния приложения и восстановление данного состояния при возврате к нему. Девелоперы, которые намерены разрабатывать программы под ОС WP7, могут не заботится о сохранении/возврате состояния – это реализовано автоматически средствами ОС. Пользователь может спокойно переключаться между окнами – никакой разницы он не заметит, т.к. вернется в тоже состояние, в котором он оставил приложение.
Выполнение приложения может быть прервано еще в ряде случаев: при срабатывании будильника, входящем вызове и т.д. В такой ситуации прерывание происходит на небольшой период времени и несколько отличается по своей реализации от предыдущего случая: приложение продолжает фоново работать и не удаляется из памяти. Игровые и некоторые другие приложения требуют постоянного взаимодействия с пользователем. Их разработчики должны позаботиться о приостановке своей программы на время обработки внешнего события.
Такое построение мобильной платформы с нашей точки зрения более правильное, чем занимающая огромное количество ресурсов многозадачность. Автоматическое сохранение/восстановление состояния приложения очень удобно для девелоперов.
Однако имеются и недоработки, над которыми сейчас вовсю трудятся специалисты Microsoft. Некоторые задачи должны долгое время работать в фоновом режиме. Это относится, например, к будильнику или к записывающему приложению для GPS-треков. На MIX 2010 была представлена версия WP7, в которой не реализованы эти функции. Но эту явную недоработку, несомненно, исправят.
Исходя из всего вышесказанного, можно сделать вывод, что работа с несколькими приложениями в Windows Phone 7 организована более эффективно, чем в Windows Phone Classic.