Я знаю, очевидно, что не стоит закрывать приложения на вашем iPhone, чтобы сэкономить на батарее. Я читал вопросы и ответы, такие как « Принудительное закрытие приложений» на устройствах iOS? но это все еще не совсем гель со мной. Иногда я нашел более 50 приложений , работающих, так не закрывать их не имеет смысла.
Может быть, я немного староват, и вы просто не можете научить старых собак новым трюкам, но может кто-нибудь здесь объяснить, ПОЧЕМУ лучше просто держать все эти приложения работающими? И когда я говорю «объяснить», я имею в виду непрофессионала, чтобы я мог понять.
Ответы:
Ты не одинок. Люди просто привыкли к своим привычкам настольных компьютеров, и понятно, что они переносят эти привычки на свои iPhone и iPad.
Однако, позвольте мне попытаться объяснить это, используя аналогию:
Представьте себе, что это жаркий день, и вы вне садоводства. Вы испытываете жажду, поэтому вы идете внутрь на кухню, берете большой стакан, кладете в него немного льда и наполняете его водой. Затем вы выпиваете половину и выливаете остаток в раковину, прежде чем выходить на улицу. Вскоре вы снова испытываете жажду, поэтому вы идете обратно на кухню, берете тот же стакан, кладете в него немного льда и наполняете его водой. Опять же, вы пьете только половину, а остальное выливаете в раковину!
Приведенный выше рабочий процесс просто не имеет смысла. Почему бы тебе не взять стакан с собой? И вы не только тратите впустую воду, опустошая ее, но вы тратите больше времени и энергии, чтобы получить эту воду снова.
Точно так же, когда вы выходите из приложения, вы фактически используете некоторый заряд батареи в процессе этого (например, очищаете его из ОЗУ и т. Д.), А затем снова, когда вам нужно запустить его снова и загрузить обратно в ОЗУ.
Поэтому в большинстве случаев лучше оставлять приложения открытыми. Несмотря на то, что они открыты, они на самом деле просто сидят в режиме приостановки, в котором вообще не используется заряд батареи. Да, приложение все еще загружено в ОЗУ и занимает место , но на самом деле оно ничего не делает - оно просто бездействует. И поскольку в этом состоянии он не использует заряд батареи, нет смысла выходить из него с точки зрения сохранения заряда батареи - особенно если это приложение, которое, как вы знаете, будет использовать снова и снова в течение дня.
Также на самом деле нет никакого смысла принудительно выходить из приложения, потому что сама iOS сделает это за вас, если / когда это потребуется , чтобы освободить ОЗУ. Таким образом, если у вас открыто 50 приложений и они остаются открытыми, то iOS не была вынуждена закрывать какие-либо из них, чтобы освободить память.
Теперь, как и все, всегда есть исключения из правила (например, приложения, которые должны выполнять фоновые задачи). Примером этого является тот, который воспроизводит музыку, когда вы выполняете другие действия с вашим телефоном, или тот, который загружает контент в фоновом режиме, или тот, который подсчитывает, сколько шагов вы проходите в день, и т. Д. Однако iOS имеет чрезвычайно эффективный процесс для управления фоновыми приложениями / задачами, и если вы решите выйти из них, вы в основном говорите, что не доверяете операционной системе правильно выполнять свою работу.
Поэтому не стесняйтесь выходить из своих приложений, когда это необходимо (например, потому что он заморожен и т. Д.), Но не делайте этого для экономии заряда батареи. Фактически, если вы это сделаете, вы достигнете противоположного и будете использовать больше энергии аккумулятора в течение дня!
Резюме
Большинство приложений в App Switcher будут находиться в подвешенном состоянии - это означает, что они не видны на экране, не выполняют код, не используют процессор или графический процессор, а также не используют батарею. Тем не менее, они все еще находятся в памяти, пока они не будут очищены (если необходимо) системой для освобождения памяти:
Источник : см. Таблицу 2-3 в первой справочной ссылке в конце этого ответа.
Единственные приложения, которые действительно работают на вашем iPhone в любой момент времени, - это активное приложение (то есть, видимое на экране) и любые другие, работающие в фоновом режиме . ( Примечание: есть некоторые временные исключения из этого в случае приложений, которым все еще нужно время для завершения выполнения кода, который они уже запустили, когда они были активны - обычно это всего за несколько секунд, но теоретически может быть увеличено до минуты.) ,
Рекомендации
источник
Представленные ответы точны, я просто хочу уточнить с точки зрения разработчика iOS.
iOS предназначена для управления как можно большим количеством вещей, поэтому вам (и разработчикам) не нужно беспокоиться о них. Конечным результатом является несколько непротиворечивый подход к приложениям, в том числе от Apple (даже если иногда Apple сама срезает некоторые углы).
Это, как говорится, предпосылка:
Сказав все это, можно предположить, что большинство пользователей закрывают приложения в надежде увеличить время автономной работы, при этом создается впечатление, что, закрывая их, вы тратите меньше энергии на поддержание работы этих приложений.
Правда в том, что на iOS это почти никогда не происходит. Когда вы нажимаете home, приложение приостанавливается и больше не использует ресурсы, которые могут понадобиться другому приложению. Если новому приложению (или даже iOS) требуется эта память, оно само позаботится об этом, но только если это потребуется.
Вы закрываете приложения снова и снова, вынуждая iOS сделать эту потенциально дорогостоящую задачу по-настоящему выгрузкой приложения, сохранением его состояния, а что нет, с добавленной проблемой, что при повторном открытии приложения все эти вещи должны быть возвращены и, в зависимости от сложности приложения, многие вещи должны быть прочитаны из хранилища, в основную память телефона и так далее. Этой дополнительной работы можно было бы избежать, если бы вы просто позволили приложению оставаться в «приостановленном» состоянии.
Однако ...
В некоторых случаях (и они редки, но не редки), вы хотите убить приложения, которые плохо себя ведут. Примерами являются (но не ограничиваются ими): приложения, работающие с фоновым звуком, или асинхронные сервисы, такие как определение местоположения (где приложение запрашивает местоположение, а iOS должна пойти и спросить, где он находится, например, запустив GPS при необходимости) потоковое видео и т. д.
У меня были бесчисленные экземпляры приложений, таких как Lyft, United Airlines, даже Twitter, которые оказались в неисправном состоянии (или просто не работают должным образом), либо потому, что вы находитесь в плохой сети (iOS действительно плохо работает в восстановление из некоторых плохих сетей в последних 3-4 выпусках) или сеть просто не отвечает должным образом.
Со временем большинство этих проблем исчезают, и приложение снова начинает работать; но если вам действительно нужно, чтобы приложение работало сейчас , тогда вы должны пойти дальше и заплатить цену за необходимость убить его и перезапустить с нуля. При этом вы использовали больше батареи, но вам это нужно.
И если это сбивает с толку, я могу привести аналогию с автомобилем, потому что это то, что мы склонны делать все время.
Автомобильная аналогия
Я знаю, что автомобильные технологии продвинулись вперед, и это уже не хороший пример, но играйте со мной здесь .
При запуске двигателя автомобиля использовалось больше топлива, чем просто на холостом ходу. Когда в автомобилях вместо инжекторов были карбюраторы, это было еще хуже; Вот почему выключение вашего двигателя, когда вы останавливаетесь на красный свет, теоретически может использовать больше топлива, чем просто холостой ход на минуту. Более новые автомобили имеют гораздо более эффективный механизм и могут останавливать двигатель, но остаются в полузапущенном состоянии (давайте не будем слишком вдаваться в автомобили здесь).
Вы закрываете приложения, это эквивалент человека, выключающего машину на каждом стоп-сигнале. Вместо того, чтобы просто дать ему простаивать, пока он вам снова не понадобится, обычно через несколько секунд.
Аналогия не идеальна, по правде говоря, простаивающие машины по-прежнему используют топливо, в то время как приостановленные приложения - нет; однако, в глазах телефона они не используют ничего, связанного с памятью / батареей (если, конечно, они не имеют какой-либо активной фоновой обработки).
Вы в основном выключаете свой движок каждый раз, когда убиваете приложение, и вы не позволяете iOS «умному» механизму холостого хода вашего движка позаботиться об этом, поэтому, когда индикатор становится зеленым, вы можете просто нажать на акселератор и двигатель работает быстрее, чем если бы он был остановлен на 100%. Запуск двигателя из остановленного состояния также потребляет больше энергии, чем просто топливо, вам нужно повернуть стартер, чтобы запустить двигатель, впрыскать топливо и создать искры, так что… это много работы за кулисами. Приложения похожи на движки. :)
источник
По аналогии ... с вашим автомобилем, если вам нужно сделать слишком много остановок в течение дня и продолжать останавливать и запускать двигатель, придет время, когда батарея будет полностью разряжена. Это может произойти, если время зарядки, когда вы едете между остановками, недостаточно велико для восстановления огромного количества энергии, которая высасывается из батареи при каждом запуске двигателя. Кроме того, это плохо для стартера и общего потребления газа. Вот почему многие водители грузовиков будут держать двигатель на холостом ходу во время коротких остановок.
Эта аналогия ИМО похожа на миф об экономии памяти.
источник
Просто высказываю другое мнение ради обсуждения. Эта концепция имеет определенную степень правды, но как только у вас будет определенное количество открытых приложений, вы, вероятно, начнете видеть уменьшающуюся отдачу от удержания приложений в приостановленном состоянии.
Очевидно, что чем больше приложений вы откроете, тем больше оперативной памяти будет привыкать. Как правило, каждое приложение в памяти разделяется на память, которую фактически использует само приложение, память, которую приложение хочет иметь под рукой, и память, которую операционная система фактически позволяла приложению использовать, что дает вам окончательный объем памяти приложения разрешено использовать. Причина, по которой приложение сохраняет отдельную часть этой памяти в качестве памяти, которую оно хочет использовать, заключается в том, что приложению может потребоваться увеличить объем кучи, но оно не обязательно хочет делать это сразу, потому что сборщикам мусора вредно имеют большие кучи (большие кучи = более длинные сборки мусора), поэтому приложение выделит часть памяти, которая в данный момент не используется, но может использоваться приложением исключительно в случае необходимости.
Скажем, ОС разрешает моему приложению до 700 МБ, а набор приложений отводит 300 МБ этой памяти для себя, оставляя 400 МБ для использования моим приложением, если оно хочет, но затем открывается другое приложение и ему требуется немного памяти; ОС просматривает все разные приложения и решает, можно ли извлечь некоторую память из другого приложения и использовать ее для нового приложения, в этом случае она может принять решение взять 150 Мб из памяти, разрешенной моим приложениям, и передать ее новому приложению. требуя замены памяти, чтобы дать возможность использовать новую память приложения (представьте себе, что это перераспределение средств в бизнесе); чем больше у вас открытых приложений, тем больше работы операционная система должна принять, чтобы принять решение память какого приложения она может откачать, чтобы освободить память нового приложения.
В этом смысле каждое приложение, которое открывается и приостанавливается, усложняет этот процесс, делая его более ресурсоемким и, в конечном счете, требует больше энергии батареи для открытия будущих приложений, чем экономия батареи, если не закрывать другие приложения.
Теперь учтите, что все это не учитывает, что, если вы действительно не убьете приложение, могут быть запущены фоновые службы, которые потребляют вычислительную мощность, например, уведомления, настроенные на уведомление вас по таймеру, и т. Д. С другой стороны, некоторые приложения не используют настоящую фоновую службу и фактически используют push-уведомления от таких служб, как firebase, которые не требуют, чтобы приложение было открыто в любой момент.
Еще один момент, который нужно учитывать: чем больше приложений вы постоянно открываете, тем больше фрагментируется память, пока операционная система не проработает и не очистит память, чтобы сделать ее более чистой и более эффективной, что само по себе также снижает вычислительную мощность, и Чем больше памяти занято приложениями, тем интенсивнее будет этот процесс для вашего устройства.
Все это говорит о том, что оставлять открытыми приложения в основном более эффективно, если не открывать слишком много приложений, однако я не уверен, сколько приложений нужно открыть, чтобы достичь этого порога, если число существует.
Источники:
Сборщик мусора SGen для Mono: http://www.mono-project.com/docs/advanced/garbage-collector/sgen/
Обзор профилировщика памяти для приложений iOS и Android Xamarin, в котором показано, как приложение управляет памятью (рабочий набор, личные байты, выделенная память и т. Д.) Https://blog.xamarin.com/say-hello-to -The-Xamarin-профилировщик /
источник
Чистая версия: это лучше, потому что ОС была разработана, чтобы сделать ее лучше до того, что пользователь захочет держать приложения (или в «приостановленном» состоянии), чтобы собрать больше информации о ваших действиях [*] позже если нужно.
Более длинная версия: приложения, которые «приостановлены», будут сохранять свое состояние в памяти, поэтому, как только вы захотите запустить их резервное копирование, процесс загрузки всего назад потребует меньше времени для процессора и почти не использует блок хранения ... С это то, что вы не можете знать, делают ли ваши приложения какие-то другие вещи в фоновом режиме, которые во многих случаях они сидят там, собирая данные о вас.
[*] Чтобы подробнее узнать о сборе данных с вашей стороны ... приложения, которые хранятся в памяти, могут быть либо «приостановлены», либо активны в фоновом режиме. Вы, как владелец устройства, не можете знать (если вы не обладаете знаниями и некоторыми другими приложениями для активного сканирования использования процессора), что на самом деле делает указанное приложение. С точки зрения безопасности я бы посоветовал закрыть любое приложение, которое вы не собираетесь использовать, в течение следующих 10 минут.
PS Эта практика также делается на устройствах Android, кстати ...
источник