О многозадачности

Многозадачность в смартфонах – одна из самых обсуждаемых и противоречивых тем в индустрии. Причем стала таковой она недавно, когда с легкой руки одной калифорнийской компании стало считаться, что многозадачность является скорее недостатком, чем достоинством. До этого тема была скучновата, многозадачность у всех была, и оставалось только с толком или без пользы приспособить ее к делу. Теперь все более увлекательно.

Не вдаваясь в технические подробности, опишу многозадачность с точки зрения пользователя. Это простая и удобная вещь, хорошо известная по настольным ПК. Во-первых, одновременно можно запустить много приложений и легко переключаться между ними, то есть выводить на экран то одно, то другое. Во-вторых, если приложение делает какую-то работу, не требующую внимания пользователя: скачивание почты, построение графиков, воспроизведение музыки, то можно переключиться в другое приложение, а первое продолжит свою работу, через некоторое время можно к нему вернуться, и там все сделано.

Win

Полезнейшая функция, если реализация идет точно по описанию. Механизмы для этого продуманы не один десяток лет назад, подобным образом многозадачность реализована не только в Windows XP и MacOS, но и в пожилых Symbian и Windows Mobile.
На iPhone все сломалось. Apple объявила, что многозадачность плохо сказывается на производительности и энергопотреблении смартфона и ее “отменила”. Потом запрет был снят, но лишь частично. Свои ограничения на многозадачность наложены в Android и Windows Phone. MeeGoИз относительно новых ОС все честно только в MeeGo.

Словосочетание “все честно” я употребляю вот почему. На уровне ядра ОС все перечисленные операционки поддерживают многозадачность, и нет никаких препятствий к тому, чтобы просто “включить” ее. Но разработчики блокируют эту возможность. Пример Apple показал, что пользователи готовы жертвовать данной функциональностью ради видимой плавности работы. Жертвы велики – большинство приложений, будучи убранными с экрана, попросту ставятся “на паузу”. А во время анимационных эффектов типа прокрутки окна в iPhone “на паузе” стоит даже текущее приложение. Зато анимация идет плавно, без малейших рывков.

В позиции производителей смартфонов есть зерно здравого смысла. Отправив некорректно написанное приложение в фоновый режим, можно получить «молотилку», которая будет греть процессор и расходовать батарею, не выполняя сколько-нибудь полезной работы. Также разумно определенным образом централизовать фоновые задачи вроде скачивания почты и новостей, чтобы реже будить процессор и беспроводные модули, экономя энергию. Но все архитекторы ОС пошли дальше.
Пользователя псевдомногозадачной ОС легко ввести в заблуждение. Вроде вышел из приложения, а потом из экрана многозадачности к нему вернулся – все окей. И даже музыка в фоновом режиме играет и файлы грузятся! Opera Mobile AndroidУвы, это касается только системных и специально написанных приложений. Если работа в режиме многозадачности явно не описана программистами, приложение в фоновом режиме не будет ничего делать! Поэтому если, скажем, загрузка почтового сообщения или обновления новостей затянулась, уходить на минутку поиграть в игрушку не стоит. По возвращении вас скорей всего ждут не полностью загруженные новости и почта, а оборванное соединение и процесс, который как правило нужно начинать сначала. Ярчайший пример – Opera mobile для Android, перегружающая все странички при каждом открытии приложения. Аналогично ведет себя навороченный браузер iCab Mobile на iOS. На каждом приложении поддержку многозадачности требуется проверять индивидуально.

Стремление производителей ОС оптимизировать энергопотребление и прочие параметры смартфонов очень похвально. Но нельзя делать это так, чтобы пользователь получал проблемы и неприятные сюрпризы. В конкретных описанных проблемах как правило виноваты разработчики, не предусмотревшие фоновый режим для своих приложений , но вина владельца ОС в том, что он не помог разработчикам довести программы до ума и допустил сырое приложение к загрузке пользователями. В разной мере это касается всех – Apple, Google, Microsoft. Вопрос в том, кто первый системно возьмется за решение проблемы.

Связанные посты