Представленные ответы точны, я просто хочу уточнить с точки зрения разработчика iOS.
iOS предназначена для управления как можно большим количеством вещей, поэтому вам (и разработчикам) не нужно беспокоиться о них. Конечным результатом является несколько непротиворечивый подход к приложениям, в том числе от Apple (даже если иногда Apple сама срезает некоторые углы).
Это, как говорится, предпосылка:
- iOS знает больше о памяти, чем мы. Он знает, сколько у него есть и сколько ему нужно (в определенной степени).
- iOS имеет полный контроль над памятью; последнее слово о том, кто чем пользуется.
- Если iOS требуется память, она найдет ее, и обычно это делается путем уничтожения других процессов, которые некоторое время простаивали (и за кулисами существует множество правил, мы не знаем их всех и на самом деле не знаем беспокоиться о них).
- Все, что процессор (CPU) делает, требует энергии. Абсолютно все Не забывайте, что компьютеры - это просто очень маленькие электронные контейнеры, которые перемещают их в очень маленьких пространствах.
- Когда приложение убивается, есть несколько согласованных протоколов (контрактов), которые определяют, что нужно сделать. iOS обеспечивает и поддерживает эти протоколы. Но работа должна быть сделана, это не бесплатно и, конечно, не всегда дешево (это действительно зависит от того, что приложение).
Сказав все это, можно предположить, что большинство пользователей закрывают приложения в надежде увеличить время автономной работы, при этом создается впечатление, что, закрывая их, вы тратите меньше энергии на поддержание работы этих приложений.
Правда в том, что на iOS это почти никогда не происходит. Когда вы нажимаете home, приложение приостанавливается и больше не использует ресурсы, которые могут понадобиться другому приложению. Если новому приложению (или даже iOS) требуется эта память, оно само позаботится об этом, но только если это потребуется.
Вы закрываете приложения снова и снова, вынуждая iOS сделать эту потенциально дорогостоящую задачу по-настоящему выгрузкой приложения, сохранением его состояния, а что нет, с добавленной проблемой, что при повторном открытии приложения все эти вещи должны быть возвращены и, в зависимости от сложности приложения, многие вещи должны быть прочитаны из хранилища, в основную память телефона и так далее. Этой дополнительной работы можно было бы избежать, если бы вы просто позволили приложению оставаться в «приостановленном» состоянии.
Однако ...
В некоторых случаях (и они редки, но не редки), вы хотите убить приложения, которые плохо себя ведут. Примерами являются (но не ограничиваются ими): приложения, работающие с фоновым звуком, или асинхронные сервисы, такие как определение местоположения (где приложение запрашивает местоположение, а iOS должна пойти и спросить, где он находится, например, запустив GPS при необходимости) потоковое видео и т. д.
У меня были бесчисленные экземпляры приложений, таких как Lyft, United Airlines, даже Twitter, которые оказались в неисправном состоянии (или просто не работают должным образом), либо потому, что вы находитесь в плохой сети (iOS действительно плохо работает в восстановление из некоторых плохих сетей в последних 3-4 выпусках) или сеть просто не отвечает должным образом.
Со временем большинство этих проблем исчезают, и приложение снова начинает работать; но если вам действительно нужно, чтобы приложение работало сейчас , тогда вы должны пойти дальше и заплатить цену за необходимость убить его и перезапустить с нуля. При этом вы использовали больше батареи, но вам это нужно.
И если это сбивает с толку, я могу привести аналогию с автомобилем, потому что это то, что мы склонны делать все время.
Автомобильная аналогия
Я знаю, что автомобильные технологии продвинулись вперед, и это уже не хороший пример, но играйте со мной здесь .
При запуске двигателя автомобиля использовалось больше топлива, чем просто на холостом ходу. Когда в автомобилях вместо инжекторов были карбюраторы, это было еще хуже; Вот почему выключение вашего двигателя, когда вы останавливаетесь на красный свет, теоретически может использовать больше топлива, чем просто холостой ход на минуту. Более новые автомобили имеют гораздо более эффективный механизм и могут останавливать двигатель, но остаются в полузапущенном состоянии (давайте не будем слишком вдаваться в автомобили здесь).
Вы закрываете приложения, это эквивалент человека, выключающего машину на каждом стоп-сигнале. Вместо того, чтобы просто дать ему простаивать, пока он вам снова не понадобится, обычно через несколько секунд.
Аналогия не идеальна, по правде говоря, простаивающие машины по-прежнему используют топливо, в то время как приостановленные приложения - нет; однако, в глазах телефона они не используют ничего, связанного с памятью / батареей (если, конечно, они не имеют какой-либо активной фоновой обработки).
Вы в основном выключаете свой движок каждый раз, когда убиваете приложение, и вы не позволяете iOS «умному» механизму холостого хода вашего движка позаботиться об этом, поэтому, когда индикатор становится зеленым, вы можете просто нажать на акселератор и двигатель работает быстрее, чем если бы он был остановлен на 100%. Запуск двигателя из остановленного состояния также потребляет больше энергии, чем просто топливо, вам нужно повернуть стартер, чтобы запустить двигатель, впрыскать топливо и создать искры, так что… это много работы за кулисами. Приложения похожи на движки. :)