Перестаньте закрывать приложения на iPhone. Это мешает системе работать эффективно
Apple с самого запуска iPhone была против принудительного завершения работы программы. Объясняю, почему.
Сотню раз видел, как мои друзья и люди в метро уже выученным механическим движением судорожно выкидывают карточки открытых приложений за пределы экрана iPhone, чтобы всё закрыть.
Ну, ладно, это их дело.
Но весь есть особые персонажи, которые, глядя в мой iPhone начинают возмущаться и причитать фразой «а чего у тебя столько всего отрыто?».
Ну, во-первых, это моё дело.
А во-вторых, вам бы тоже оставлять приложения работать в фоне и не закрывать при каждом случае.
Есть универсальное правило, которое используют даже в Android: приложения не надо.
Сейчас поставим точку, почему нужно оставить в покое отрытые приложения на iPhone и iPad. И почему кнопку «закрыть всё» ждут уже 17 лет, но вряд ли дождутся.
Это как если перезагружать телефон
В основе операционных систем iPad и Apple Vision Pro лежит iOS, чтобы те могли работать дольше. И это при том, что в обоих устройствах стоят чипы из Mac.
Так происходит, потому что при разработке iOS приложениям изначально запретили полноценно работать в фоне.
Это убивает сразу двух зайцев: программа работает гладко, а батарея не расходуется на невидимые и не особо нужные процессы.
Максимально примитивно опишу матчасть.
У приложения в iOS есть три основных состояния:
Запуск Активное Фоновое.«Запуск» активирует фреймворк UIKit, в ходе чего программа запускается по правилам iOS.
Запуск делится на два вида: «активация» и «возобновление». В первом случае вы загружаете приложение с нуля, во втором оно просыпается из покинутого вами состояния, не успев полностью отключиться.
Хоть это и занимает пару секунд, процессор тратит больше энергии и времени на то, чтобы обработать активацию по сравнению с запуском приложения из режима сна.
Так iOS меняет состояние приложения. Источник: Apple
«Активное» состояние это когда приложение у вас перед глазами и выполняет нужные задачи.
«Фоновое» включается принудительно, когда приложение сворачивают. Во время этого процесса система запоминает, в каком положении был интерфейс, что было открыто. Большинство процессов останавливается и уводит программу в спящий режим.
В iOS встроена специальная система «сохранения интерфейса для перезапуска», которая помогает системе в оптимизированном виде хранить экран приложения, на котором вы остановились.
Состояние приложения в зависимости от того, свернуто оно или нет. Источник: Apple
Когда приложение закрывается принудительно, кэш сбрасывается, данные о последнем состоянии тоже.
При открытии вы заставляете чип заново тратить ресурсы на запись кэша и проводить инициализацию (первичный запуск), в которую входят десятки шагов.
А когда вы сворачиваете приложение, оно моментально переходит в «фоновое» состояние.
Процессы во время запуска приложения в iOS. Источник: Apple
Apple называет запуск полного цикла тёплым, а возобновление работы — холодным. Не знаю, в чём настоящая причина таких прилагательных, но тут будто проходит аналогия с необходимым количеством энергии.
Запуская программу заново, процессор нагреется больше, чем если бы вы просто развернули ранее запущенное приложение.
Самая простая аналогия.
Вы же не выключаете телефон, чтобы сохранить энергию? Вы просто его блокируете, то есть переводите в спящий режим. Утечка энергии есть, но явно меньше, чем если бы вы перезагружали смартфон при каждом использовании.
iOS безжалостно удаляет ненужный кэш сама
Кого-то замахивание всех приложений для закрытия успокивает, потому что это репетативный бестолковый процесс. Но тут напоминаю, что дело в специально гипнотизирующей отзывчивости всей системы, а не намеренном желании Apple вас мотивировать конкретно этим постоянно заниматься.
С практической точки зрения вы тоже себе делаете хуже.
Разворачивание приложения происходит моментально, а запуск занимает несколько секунд. Получается, что
Это бессмысленно ещё и потому что мессенджеры, например, продолжают получать сообщения и показывать пуш-уведомления, даже если их полностью закрыть.
iOS сама удаляет даже скриншоты предпросмотра, если они отнимают нужные ресурсы
iOS автоматически отключает приложения, если ресурсов не хватает. Это самодостаточная система, которая даже процессор замедлит во избежания перегрева, если нужно.
Да, остаётся список запущенных ранее приложений. Но, поверьте, он тоже не тратит ресурсы, которые вам нужны. Когда программа сворачивается, в режиме многозадачности отображается не готовый к взаимодействию экран, а скриншот. И даже его система удалит, заменив загрузкой стартового экрана, если ей будет нужно.
Откуда у меня эти данные? Глава по разработке ПО Крейг Федериги рассказывал об этом в 2016 году читателю 9to5mac. Приблизительно в то же время информацию подтвердил глава по платформам и экосистемам Google Хироси Локхаймер, отвечающий за Android. Да и сама Apple рекомендует закрыть приложение, если «не отвечает или кажется, что оно зависло».
Так что никакого улучшения работы и, тем более, роста автономности таким способом вы не добьетесь. На эту тему у нас есть реально работающие советы.