Приносит ли принудительное закрытие приложений какое-либо преимущество на устройствах iOS?

Я получил смешанные ответы от разных веб-сайтов и людей по этому вопросу, и я хотел опубликовать его, чтобы вы все ответили раз и навсегда.

Вопрос в том, имеет ли принудительное закрытие приложений (то есть двойной щелчок по кнопке «Домой», а затем смахивание вверх по ним) какую-либо пользу для батареи или общей производительности iPhone или любого другого устройства iOS?

@Tetsujin Если у вас есть ответ, опубликуйте его ниже, спасибо. Комментарии не имеют функций для редактирования или проверки «ответа» как правильного (или нет).

Ответы (5)

Вокруг этой темы было много споров и дискуссий. Я считаю, что это было выгодно для iOS еще во времена v3 и v4, но сейчас это не так.

Крейг Федериги даже недавно заявил, что это не обязательно и не увеличивает срок службы батареи. Apple имеет встроенную систему управления памятью, позволяющую вовремя приостановить и/или закрыть приложение, когда это необходимо. Единственный раз, когда вы должны принудительно закрыть приложение, — это если оно перестало отвечать на запросы.

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

Недостаток этого заключается в том, что приложения не работают в фоновом режиме, поэтому, как только вы переключаетесь на новое приложение или трамплин / список значков / экран блокировки - iOS уже остановила / приостановила / сбросила всю активность файловой системы для приложения.

Он сигнализирует зависшему приложению, что ему необходимо полностью повторно инициализировать себя с нуля, игнорируя любое сохраненное состояние или кешированные результаты. Он сигнализирует Apple в виде отчета о сбое (и, возможно, разработчику), какие-то навигационные крошки, где именно в коде было приложение, когда оно было «убито» пользователем.

  • С точки зрения производительности — принудительный выход из приложений ухудшает работу iOS и приложения — во многих случаях ощутимо хуже.
  • Что касается времени автономной работы — принудительный выход из приложений значительно ухудшает работу iOS и время автономной работы .

Думайте об этом как об операции — вы наносите явный вред в краткосрочной перспективе — если вы не уверены, что операция необходима, не принимайте удар по производительности и не бросайте принудительно.

Не думайте, что это так просто. Если приложение использует значительный объем ресурсов в фоновом режиме (например, Facebook) и вы не собираетесь возвращаться к нему в течение более длительного времени, усилия по перезапуску будут ниже, чем усилия по поддержанию его в рабочем состоянии.
@patrix Я не могу говорить конкретно о Facebook, но если приложение зарегистрировано для запуска фоновых служб, iOS запускает их сразу же после принудительного выхода — поэтому, если приложение не запрограммировано так, чтобы оно не запускалось при автоматическом запуске — принудительный выход на самом деле не предотвращает возрождение фоновых потоков/задач — он просто прерывает их, очищает, а затем снова запускает.

В последнее время эта тема снова актуальна. Я твердо верю, что принудительно закрывать приложения на устройствах iOS бесполезно. Полезно перезапускать приложения только в случае их сбоя. Здесь больше информации.

9to5Mac:

В некоторых кругах давно существует мнение, что использование функции многозадачности iOS для принудительного закрытия приложений может помочь сэкономить заряд батареи iPhone или повысить скорость работы программного обеспечения, когда смартфон становится медленным.

Ранее на этой неделе пользователь iPhone решил отправить электронное письмо генеральному директору Apple Тиму Куку, чтобы решить проблему раз и навсегда, и вместо этого получил ответ от Крейга Федериги, старшего вице-президента Apple по разработке программного обеспечения (через 9to5Mac).

Разговор по электронной почте

 

Вот, из официального документа поддержки о принудительном закрытии приложений, собственный совет Apple о том, когда использовать эту функцию:

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

 

MacDailyNews цитирует электронное письмо Стива Джобса от 2010 года:

Просто используйте [многозадачность iOS] так, как задумано, и будет вам счастье. Нет необходимости когда-либо выходить из приложений.

 

На случай, если вы не верите старшему вице-президенту Apple по программному обеспечению, официальной документации Apple по поддержке или Стиву Джобсу, вот несколько других статей, указывающих на то, как эта привычка на самом деле пагубно влияет на срок службы батареи iPhone:

Теоретически да. Приложения, работающие в фоновом режиме, действительно потребляют память (их потоки все еще существуют, и поэтому вы можете увидеть их в списке, дважды щелкнув кнопку «Домой»), и, следовательно, они потребляют батарею.

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

Таким образом, для приложения, которое мало что делает в фоновом режиме, принудительное закрытие не принесет заметных преимуществ.

«Приложения, работающие в фоновом режиме, действительно потребляют память (их потоки все еще существуют, поэтому вы можете увидеть их в списке, дважды щелкнув кнопку «Домой»), и, следовательно, они потребляют батарею». Это технически неправильно. То, что вы видите, когда дважды нажимаете кнопку «Домой», — это снимок (в памяти) приложения, когда оно было закрыто. То, что вы видите это там, не означает, что темы все еще существуют. iOS останавливает запуск приложения и удаляет его из памяти, если ему не разрешено работать в фоновом режиме И оно активно выполняет обработку.
@fbara Я не согласен. Согласно документу Apple для разработчиков , приложения переходят в состояние, вызываемое Suspendedвскоре после перехода в фоновый режим, и «во время приостановки приложение остается в памяти, но не выполняет никакого кода». Процесс приложения все еще существует, если iOS не прерывает его. Если у вас есть XCode (инструмент разработчика для приложений iOS), вы можете использовать Debug->Attach to Process и увидеть список процессов на вашем телефоне, даже если ничего не запущено на переднем плане.
В том же документе также говорится: «Вскоре после applicationDidEnterBackground:возврата метода делегата приложения система делает снимок окон приложения . Точно так же, когда приложение просыпается для выполнения фоновых задач, система может сделать новый снимок, чтобы отразить любые соответствующие изменения. , Например, когда приложение пробуждается для обработки загруженных элементов, система делает новый снимок , чтобы отразить любые изменения, вызванные включением элементов.Система использует эти снимки снимка в многозадачном пользовательском интерфейсе, чтобы показать состояние вашего приложение." Это то, что я имел в виду.
@fbara Это правда: моментальные снимки используются многозадачным пользовательским интерфейсом, особенно для того, чтобы не отображать конфиденциальные данные при входе в фоновый режим (например, некоторые банковские приложения). Но я думаю, что процесс все еще существует. Но давайте не будем слишком зацикливаться на технических деталях, тем не менее, он по-прежнему потребляет часть памяти (снимки по-прежнему правильно потребляют память).

Я обнаружил, что закрытие приложения Facebook, в частности, может сэкономить заряд батареи. Проверив его использование в разделе батареи (Настройки> Батарея> Время), я не могу не убедиться, что он не работает хорошо.

Это связано с тем, что он регистрируется как клиент VoIP, и закрытие приложения этого не изменит.