Читаем Компьютерра PDA 19.06.2010-25.06.2010 полностью

В чём секрет многозадачности iOS4

Автор: Андрей Письменный

Опубликовано 22 июня 2010 года

У обладателей айфонов и плееров iPod Touch наступил небольшой, но весёлый праздник – день обновления операционной системы. Ритуал, связанный с ним, прост: телефон или плеер положено подключить к компьютеру, найти в iTunes кнопку "check for updates", скачать что-то около трёхсот мегабайт и с затаённым дыханием ждать, пока устройство перезагрузится.

Чем же способна нас порадовать обновлённая ОС? О большинстве нововведений глава Apple Стив Джобс говорил на презентации iOS 4 в апреле 2010 года, затем с новыми подробностями – на июньской WWDC 2010. Основное нововведение – это, конечно, то, что Джобс назвал "многозадачностью", а на самом деле – хитроумный механизм, при помощи которого при переходе из приложения в приложение операционная система продолжает выполнять лишь необходимые задачи, а состояние программы замораживает.

Ввод нововведений неравномерен – не все уже выпущенные телефоны получили новые функции. "Многозадачность", к примеру, доступна лишь начиная с iPhone 3GS и iPod touch третьего поколения, а iPhone 3G и соответствующее поколение "тача" одарено лишь менее значительными новинками: возможностью создавать папки для группирования приложений, функцией смены фонового рисунка на главном экране и прочими мелочами.

Но даже обладатели последних моделей iPhone и iPod touch, скорее всего, окажутся неприятно удивлены после установки обновления. Дело в том, что разрекламированный способ переключаться между приложениями пока что работает вовсе не так, как было показано. Во время демонстрации Стив Джобс показывал, что в любой момент (даже если мы играем в какую-нибудь игру) можно два раза нажать на кнопку "домой" и увидеть список последних запущенных программ. Выбираем любую из них и она моментально возникает перед нами. Проделываем трюк ещё раз, выбрав игру, и продолжаем играть с того же места. Магия!

Но провернуть всё это самому просто-напросто невозможно. Вернувшись в игру пользователь обнаружит, что та запускается точно так же, как запускалась раньше, и вместо того чтобы начать работать с того самого момента, на котором была остановлена, может отобразить стартовое меню. Если, конечно, ранее игра не вела себя по-другому – некоторые разработчики научились самостоятельно заботиться о сохранении и восстановлении состояния своих программ.

Так в чём же дело? Почему даже после обновления на iOS 4 программы продолжают вести себя по-прежнему, а меню для переключения между задачами больше напоминает обыкновенный список последних запущенных приложений? Ответ на этот вопрос становится понятен после знакомства с принципом местной "многозадачности". Вместо того, чтобы позволять приложениям выполняться параллельно, операционная система разрешает приложениям запускать лишь некоторые специальные процессы, которые могут выполняться в фоне. Это может быть, к примеру, воспроизведение музыки, загрузка файла на сервер или недолгое действие, выполняемое перед завершением.

В какой-то мере это похоже на кооперативную многозадачность, применявшуюся во времена Windows. 3.1 и классической Mac OS. Этот тип многозадачности подразумевает, что программы исполняются друг за другом в порядке перехода фокуса от одной к другой и самостоятельно заботятся о передаче управления. Покупка компании Nextstep (и повторный найм Стива Джобса на роль исполнительного директора) позволили Apple создать Mac OS X, использующую привычную по современным компьютерам вытесняющую многозадачность.

Увы, вытесняющая многозадачность не очень-то подходит для портативных устройств – её использование грозит излишним энергопотреблением, нагрузкой на центральный процессор и замусоривание флэш-памяти файлами подкачки. К вытесняющей многозадачности приходится добавлять разные ухищрения, позволяющие системе решать, какие приложения менее важны в данный момент, и автоматически понижать приоритет их выполнения.

Похожие уловки применяются в операционной системе Google Android. Она постепенно понижает приоритет неиспользуемой программы, а затем замораживает её состояние. О случаях, когда этого происходить не должно, автор программы должен позаботиться самостоятельно.

В случае iPhone OS разработчик должен заботиться и о сохранении состояния и о его восстановлении. Просто с выходом iOS 4 это делать стало проще, чем раньше, благодаря специальным API. Сложно сказать, почему Стив Джобс обошёл вниманием этот тонкий вопрос. Вероятно, он хотел сосредоточить внимание публики на потенциальных возможностях, а не на проблемах разработчиков. Однако в итоге вышло, что новая ОС работает не так, как ожидалось.

Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Основы объектно-ориентированного программирования
Основы объектно-ориентированного программирования

Фундаментальный учебник по основам объектно-ориентированного программирования и инженерии программ. В книге подробно излагаются основные понятия объектной технологии – классы, объекты, управление памятью, типизация, наследование, универсализация. Большое внимание уделяется проектированию по контракту и обработке исключений, как механизмам, обеспечивающим корректность и устойчивость программных систем.В книге Бертрана Мейера рассматриваются основы объектно-ориентированного программирования. Изложение начинается с рассмотрения критериев качества программных систем и обоснования того, как объектная технология разработки может обеспечить требуемое качество. Основные понятия объектной технологии и соответствующая нотация появляются как результат тщательного анализа и обсуждений. Подробно рассматривается понятие класса - центральное понятие объектной технологии. Рассматривается абстрактный тип данных, лежащий в основе класса, совмещение классом роли типа данных и модуля и другие аспекты построения класса. Столь же подробно рассматриваются объекты и проблемы управления памятью. Большая часть книги уделена отношениям между классами – наследованию, универсализации и их роли в построении программных систем. Важную часть книги составляет введение понятия контракта, описание технологии проектирования по контракту, как механизма, обеспечивающего корректность создаваемых программ. Не обойдены вниманием и другие важные темы объектного программирования – скрытие информации, статическая типизация, динамическое связывание и обработка исключений. Глубина охвата рассматриваемых тем делает книгу Бертрана Мейера незаменимой для понимания основ объектного программирования.

Бертран Мейер

Прочая компьютерная литература / Книги по IT