Многозадачность iOS (способность одновременно выполнять несколько приложений) обросла множеством мифов, самый популярный из которых касается необходимости очистки «списка запущенных приложений». Дескать, так и система работает быстрее, и батарея живет дольше. Большинство заблуждений касательно iOS 6 мы развеяли в этой статье, а сегодня поговорим про особенности реализации многозадачности в iOS 7.


Эта и последующие статьи цикла пишутся для новичков и рассказывают простым языком про полезные приемы и возможности iOS/OS X. Если вы пользователь бывалый, то кричать: “Это ж усе давно знают!” не надо — некоторые обязательно не знают. Если есть идеи, о чем бы стоило рассказать, пишите в комментариях или на почту [email protected].

Советы на UiP выходят по вторникам и четвергам.


Почему «вытесняющая» многозадачность?

Начнем с понимания общих принципов многозадачности iOS, которые остались неизменными с момента реализации этой самой многозадачности в iOS 4. В отличии от конкурентных систем (того же Android), iOS не позволяет любой программе продолжать активность тогда, когда вы уже переключились на новую задачу. А заодно потреблять ресурсы системы и расходовать заряд аккумулятора. По общему правилу свернутая программа (после нажатия кнопки Home) еще 30 секунд продолжает работу, а затем замораживается. Система еще какое-то время хранит слепок состояния такой программы для быстрого ее открытия и сохранения у пользователя ощущения, что программа не замораживалась, а потом пропадает и слепок. Все что остается после — это карточка-превью в панели многозадачности.

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

Совсем особняком стоят избранные приложения, способные всегда работать в фоне без уведомления пользователя. Таким всегда был системный почтовик Mail, при наличии активных подписок самопроизвольно просыпался Newsstand. Единственным примером из стороннего софта являлся Skype — он мог обитать в фоне и принимать звонки, очевидным образом влияя на автономность устройства, но в одном из последних обновлений программу перевели на Push-уведомления и фоновая работа осталась позади.

В силу описанных возможностей, многозадачность iOS называют «вытесняющей». По сути она не полноценна и не позволяет десяткам программ быть активными не зависимо от того, отображаются ли они в данный момент на экране (как, например, на компьютере). Но для пользователя это не является проблемой, в большей мере это особенность реализации. Кроме того, благодаря такой многозадачности iOS довольствуется небольшим количеством оперативной памяти и минимально расходует заряд батареи в спящем состоянии.

Что изменилось в iOS 7?

В iOS 7 программы получили новые инструменты для фоновой работы после принудительного завершения: обновления в фоне и дистанционные уведомления. Ориентированы они в первую очередь на актуализацию данных приложений из сети, а вовсе не на выполнение долгих ресурсоемких задач. Так что временной лимит по общему правилу — 30 секунд. Используя «обновления в фоне», приложения сообщает системе про желательный интервал доступа в сеть, например, 30-40 минут, а iOS пробуждает в этот период программу. Такой механизм в первую очередь необходим новостному софту. «Дистанционные уведомления» задействуют Push-нотификации для пробуждения программы и позволяют оперативно обновить данные. Например, сообщить пользователю про выход нового выпуска подкаста.

Кроме полезной возможности обеспечить пользователя всегда актуальной информацией, iOS 7 получила интеллектуальную систему оценки фоновой активности. Она способна отслеживать частоту обращений к тем или иным приложениям и обновлять их данные заблаговременно (например, зная, что вы читаете новости в Newsify каждый день в 8 утра, iOS в 7:30 пробудет программу и даст ей возможность загрузить новую информацию). Помимо этого, iOS анализирует заявки приложений на обновления и выбирает оптимальное время для их выполнения. В результате в сеть идет один запрос, а на несколько с небольшим интервалом. Для вас как пользователя разница не заметна, а расход заряда батареи меньше.

Нужно ли очищать список запущенных программ?

Нет. «Панель многозадачности», а в iOS 7 скорее «меню многозадачности», комбинирует активные, приостановленные и выгруженные из памяти (закрытые) программы, визуально их не разделяя. Учитывая особенности «вытесняющей многозадачности», за исключением первых двух-трех карточек все эти многочисленные превью являются лишь ярлыками. Они не расходуют оперативной памяти, не требуют процессорных мощностей и не потребляют батарею, это просто история.

Вывод очевиден — очистка списка «меню многозадачности» ни коем образом на время и скорость работы устройства не влияет.

Как увеличить время работы iPhone/iPad?

Хотя получившие возможность актуализировать свои данные приложения и делают это предельно экономично, процесс все же ускоряет расход заряда аккумулятора. Для ручного управления процессом оправляемся в Настройки → Основные → Обновления контента.

Первый переключатель позволяет отключить фоновые обновления как таковые, исключением будут только системные приложения iOS 7. А далее списком перечислены все программы, желающие в фоне обращаться к сети и геолокационным данным. Исходя из целесообразности, сместите ползунки в состояние «неактивно».