Как именно работает многозадачность в iOS?

Срeди пoльзoвaтeлeй iOS-устрoйств бытуeт мнoжeствo oшибoчныx суждeний, кaсaтeльнo того, как же все таки работает многозадачность в iOS и что именно происходит с приложениями после их закрытия. Некоторые ошибочно считают, что все приложения отображенные в панели многозадачности, которая появляется при двойном нажатии на кнопку «Домой», являются запущенными, тормозят устройство, используют память и сжирают заряд батареи —   следовательно, считают пользователи, данные приложения необходимо закрывать вручную.

Доводим до вашего сведения, что в данной панели отображаются не запущенные, а недавно использованные программы. iOS устроена так, что пользователю никогда не приходится управлять системными и фоновыми задачами.  

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

Пять состояний приложения в iOS  

iOS-приложения могут находится в одном из пяти состояний, а именно:

  • Незапущенными: Приложение было закрыто или еще не было запущено.
  • Неактивным: Приложение открыто, но не получает входящих команд (например, пользователь заблокировал устройство, оставив приложение открытым).
  • Активным: Нормальное состояние используемого в данный момент приложения.
  • Фоновым: Приложение уже не на экране, но еще выполняет какие то процессы.
  • Отложенным: Приложение находится в памяти, но не выполняет процессов.
  • Состояния Активное и Неактивное интуитивно понятны, а вот что происходит с активным приложением при нажатии кнопки «Домой», и в каких других состояниях при этом находятся остальные приложения понятно не до конца.

    Итак, при нажатии «Домой» приложение из Активного переходит в Фоновый режим, затем, обычно в считанные секунды, приложения из Фонового переходят в Отложенный режим, т.е. хранятся в памяти в развернутом виде, при этом не используя ресурсов. Это делается для того, чтобы их последующий запуск проходил более быстро.   аппликации   При этом, при запуске требовательного к ресурсам (особенно к памяти) приложения, iOS самостоятельно начнет переводить Отложенные приложения в режим Незапущенных, высвобождая таким образом необходимую память. Закрывать Отложенные приложения вручную необходимости нет и никогда не было.

    Запутанность же возникает как раз в связи с панелью многозадачности на которой отображаются какие то иконки. Так вот, данные иконки не имеют никакого отношения к описанным выше состояниям приложения. Они просто отображают недавно запущенные пользователем   аппликации, для облегчения последующего к ним доступа.

    Фоновые задачи  

    Возьмем приложение, которое загружает большие объемы данных из сети, например Instacast — программа для прослушивания аудиоподкастов. Когда Instacast активен, программа начинает качать подкасты. Если же нажать кнопку «Домой»,   приложению   будет дано 5 секунд для завершения задач в Фоновом режиме, после чего оно будет переведено в Отложенный режим. Это прервет загрузку подкастов, которая занимает намного большее время.  

    Но приложениям типа Instacast позволено задержаться в Фоновом режиме чуть дольше. Приложение   заявляет   iOS, что выполняет определенную задачу, назначенную пользователем, и получает дополнительное время для фоновой работы — около 10 дополнительных минут.


    Неограниченная работа в фоновом режиме

    Итак, все приложения в iOS получают около 5 секунд для работы в фоновом режиме, чтобы «подчистить хвосты», а некоторые программы дополнительные 10 минут, чтобы завершить какую-то более длительную задачу. Правда существуют некоторые приложения, которым iOS позволяет постоянно находится в Фоновом состоянии. Данные приложения можно разделить на пять основных типов:

  • Проигрывание аудио: Приложения которые проигрывают аудиопоток в фоновом режиме, например тот же Instacast, воспроизводящий аудиоподкаст.
  • Отслеживание местоположение через GPS: Навигационные и другие приложения, отслеживающие местоположение устройства в реальном времени и сообщающие пользователю различные данные так же могут работать в Фоновом режиме неограниченно долгое время.
  • Мониторинг VoIP соединений: Приложения типа Skype и Viber, которые отслеживают входящие звонки через VoIP сети, также работают в iOS постоянно.
  • Приложения Киоска: Все загрузки «Киоска» идут в фоновом режиме и не прекращаются.
  • Сопряженные с аксессуарами приложения: Все приложения, которые получают входящие данные с различных подключенных к iOS-устройству аксессуаров не прекращают свою работу, пока подключено устройство.
  • Когда вышеуказанные приложения заканчивают выполнять задачу, они также переходят в режим Отложенных. Так же работают и многие системные приложения iOS, например приложение «Почта».

    Работающее в Фоновом режиме приложение может выполнять функции наравне с Активным, а именно — работающий в Фоновом режиме Instacast также может скачивать новые эпизоды подкастов.

    Разумеется, все фоновые приложения занимают память, потребляют ресурсы и расходуют батарею.


    Заключение

    Итак, подведем краткий итог ко всему вышесказанному и составим небольшое резюме:

  • Если вам говорят, что приложения иконки которых отображены в панели многозадачности запущены и используют память, а также системные ресурсы — они не правы.
  • При нажатии на кнопку «Домой» приложение переходит из Активного в Фоновое состояние, а затем в Отложенное состояние, при котором оно уже не расходует процессорную мощность и заряд батареи.
  • Приложение может запросить дополнительное время для работы в Фоновом режиме для выполнения определенной задачи, после чего оно все равно перейдет в Отложенное состояние.
  • В случае нехватки памяти iOS автоматически переводит Отложенные приложения в Незапущенные, т.е. попросту их закрывает.
  • Пять групп приложений (аудио, GPS, VoIP, Киоск и аксессуары) могут работать в Фоновом режиме бесконечно долгое время. Так же поступают некоторые системные приложения, например «Почта».
  • По материалам: Macworld