Со времен популяризации смартфонов перед пользователями стоит проблема низкой автономности мобильных устройств. Большие сенсорные дисплеи, мощные процессоры, энергозатратные приложения – все это в разной степени способствует быстрой разрядке аккумулятора. «Эксперты» советуют для улучшения производительности и увеличения времени автономной работы вручную закрывать эти самые приложения. В действительности, это один из мифов, который существует со времен первых версий iOS.
Многие пользователи iPhone стремятся выгружать из памяти приложения, запущенные ранее. Конечно, многозадачность работает прекрасно, но зачем занимать лишние мегабайты оперативной памяти? Тем более, ходят слухи, что несколько одновременно запущенных программ отрицательно сказываются на зарядке. В действительности, подобное оказывает на систему абсолютно противоположный эффект. Парадокс состоит в том, что выгрузка приложений из памяти только способствует ускоренной разрядке аккумулятора.
Мифы и реальность
Для начала стоит уяснить, что реализация многозадачности в iOS находится на весьма высоком уровне. Что бы ни говорили ненавистники, «операционка» прекрасно работает даже после запуска пары десятков приложений. Звучит как похвала, но программисты Apple недаром едят свой хлеб. Все разработчики подчиняются единым требованиям по созданию ПО.
Распространен миф, что принудительное закрытие приложений спасет батарею. Не позволяя системе самостоятельно управлять всеми процессами, вы совершаете ошибку. Дело в том, что само действие по вызову режима многозадачности и выгрузке программ из памяти расходует гораздо больше энергии, чем их «работа в фоновом режиме».
Возможно, большинство не поверит и подумают, что это ошибка употреблять термины «фоновые приложения» и «энергоэффективность» в одном предложении. Уверяем, оговорки и прочие погрешности в терминологии исключены. Многозадачность запускается двойным нажатием на кнопку «Домой». А полное закрытие программ осуществляется смахиванием окошка вверх (справедливо для iOS 9).
Реальность же такова, что как только вы вышли из приложения, единожды «тапнув» на клавишу «Домой», его работа останавливается: приложение перестает обращаться к процессору, а память, которую оно занимало, со временем освобождается. Конечно, бывают исключения, когда система не прекращает функционирование программы в фоновом режиме. Например, отправка электронного сообщения, воспроизведение музыки или автоматическая загрузка обновлений. Тем не менее, даже подобная «расточительность» со стороны «операционки» бережлива по отношению к аккумулятору устройства.
Когда вы вручную закрываете приложение, операционная система должна выгрузить задачу из памяти, что приводит к расходованию заряда батареи. При повторной загрузке этого же приложения системе снова нужно загрузить его в ОЗУ, что также обернется энергозатратами. Таким образом, принудительно закрывая приложения вы дважды расходуете заряд аккумулятора. Находясь же в оперативной памяти устройства, оно никак не влияет на его автономность.
Как работает многозадачность в iOS
Всего у приложений в iOS есть пять типов состояний:
- Нерабочее — работа приложения была прекращена или оно не было запущено.
- Неактивное — приложение в активном режиме, но не получает событий (например, пользователь заблокировал экран).
- Активное — нормальное состояние приложения в режиме использования.
- Фоновое — приложение скрыто, но исполняет код.
- Приостановленное — приложение находится в памяти, но не исполняет код.
Активное и неактивное для данной темы неинтересны. Большинство путается в ситуациях, когда приложение переходит из активного в фоновое, потом в приостановленное, а затем в нерабочее.
Когда вы нажимаете кнопку Домой, программа переключается из активного в фоновое. Большинство приложений через нескольких секунд после этого переходят в приостановленное. Первый технический нюанс заключается в том, что приостановленное приложение остается в памяти устройства. Это сделано для того, чтобы оно могло продолжить работу быстрее, если вы решите к нему вернуться. При этом оно не использует ресурсы процессора и батарею.
Можно предположить, что если ПО находится в памяти, то его нужно удалить оттуда для освобождения ресурсов. В действительности, iOS делает это самостоятельно. Если у вас есть приостановленное приложение и вы запускаете ресурсоемкий софт, например сложную трехмерную игру, iOS сама выгружает из памяти приостановленную программу и перемещает ее в Нерабочее состояние. Другими словами она будет полностью удалена из ОЗУ и запущена с нуля при следующем запуске.
Выводы
Главное правило многозадачности iOS звучит следующим образом: панель многозадачности является лишь списком недавно использованных приложений, вне зависимости от того, в каком состоянии они находятся. Операционная система самостоятельно выгружает задачи – тогда, когда это необходимо.
В каких случаях следует закрывать приложения и освобождать оперативную память устройства? Ответ прост – в теории никогда. Крайне редко случаются ситуации, которые должны заставить вас перезапустить программу. Разве что зависания или некорректная работа. Вероятно, в это трудно поверить, но iOS сама прекрасно справляется с распределением нагрузки на процессор и аккумулятор. Продукция Apple – это техника, которой просто нужно пользоваться, не создавая себе лишних сложностей.
]]>