Ответ от главного разработчика Apple Крейга Федериги по поводу принудительного закрытия приложений в iOS.
Мы регулярно обсуждаем варианты продления времени автономной работы мобильных устройств Apple. Тема поднималась не раз, не два, и даже не три. Связанный с этим миф выглядит так: нужно принудительно закрывать приложения из меню быстрого запуска и iPhone будет работать дольше. Речь об этом меню:
И в понимании Apple это утверждение не имеет ничего общего с алгоритмом работы системы. Читатель одного популярного зарубежного издания посвященного компании Apple, задал конкретный вопрос конкретному человеку. Вернее, двоим.
Некто Калеб задал вопрос напрямую генеральному СЕО Apple Тиму Куку:
Эй, Тим.
Скажи, ты принудительно закрываешь приложения из меню мультизадачности в iOS и нужно ли это делать?
Калеб.
P.S. Я поддерживаю вас в разбирательстве с ФБР.
К сожалению, Тим Кук не ответил на поставленный вопрос, но на этом история не окончилась и через сутки на почтовый ящик читателя пришло письмо из Apple.
Отвечает старший президент по разработке программного обеспечения компании Apple Inc, Крейг Федериги:
Привет, Калеб.
Я знаю, ты задавал вопросу Тиму. Вот что могу сказать я:
Скажи, ты принудительно закрываешь приложения из меню мультизадачности в iOS и нужно ли это делать?
Нет и нет.
:)
Спасибо что остаетесь с Apple!
Крейг.
Коротко и понятно.
Почему не нужно закрывать приложения
Большинство приложений, после сворачивания в меню многозадачности (а оно попадает туда сразу после однократного нажатия клавиши Home), автоматически приостанавливает свою работу. Происходит как бы «заморозка» в оперативной памяти.
В таком состоянии приложение попросту не может расходовать аккумулятор смартфона, поскольку iOS полностью блокирует его работу. Пользователь же видит лишь фотографию последнего актуального меню приложения и лишь после повторного запуска из меню многозадачности оно возобновляет свою работу.
Единственная категория приложений, который потребляют ресурсы аккумулятора – это те, что поддерживают работу в фоновом режиме: GPS-трекеры, фоновая музыка и им подобные.
Вывод: Принудительное закрытие необходимо лишь в том случае, когда вы хотите «оживить» зависшее приложение. На время автономной работы iOS-девайса оно никак не влияет. [9to5]
53 комментариев
Форум →Во первых можно в фотошопе такой эмейл за 1 минуту замутить
Во вторых не удивлюсь, что это “работа” PR отдела Apple
@GermanBoy, в почтовой программе не проще?
@Alex318i, в хтмл редакторе не проще?
В ворде не проще? В блокноте проще всего. Хоть в чем можно;)
Большое спасибо за объяснение, только я так и не понял надо или не надо? чищу каждое утро и это уже привычка… а ответа на вопрос так и не увидел
@Seva2006, Не нужно!:) Не выгружайте! Не делайте этого! Не убирайте приложения:) Ответ: НЕТ.
Ответ написан в конце статьи: приложения ЗАМОРАЖИВАЮТСЯ. Попробую привести пример: вы берете кусок мяса и не собираетесь его готовить. Бросаете в холодильник на заморозку. Первое – оно не портится, второе – холодильник стал мотать счетчик сильнее при постоянном температурном режиме? Нет. А вот места вроде и меньше стало, но другие-то продукты помещаются. Вот ответ: не выгружайте и оставьте эту привычку:)
Простите, может пример и глупый, но отражает «на пальцах» принцип работы системы iOS.
@Дмитрий Бардаш, стоит добавить, что в iOS предусмотрены механизмы выкидывания “залежавшихся продуктов”.
Постараюсь объяснить все не сложно, но и не на холодильниках.
При нехватке памяти происходит следующее:
1. Система рассылает активным приложениям уведомление о том, что памяти мало. Приложения в ответ должны освободить все временные ресурсы.
2. Если памяти по-прежнему мало, выгружаются из памяти неактивные приложения.
3. Если активное приложение продолжает просить больше памяти, чем система может освободить и выделить, происходит то самое принудительное завершение активного приложения.
Важно отметить, что приложения после перехода в фон могут завершать свои дела в течении 30 секунд. Потом все, финита ля комедия.
Для условно-постоянной работы в фоне существует несколько механизмов:
1. Background fetching (периодически iOS дает приложению время обновить данные, периодичность зависит от того, как часто используется приложение и некоторых других факторов).
2. Подписка на обновления геолокации.
3. Обработка push-уведомлений (они могут тихо обрабатываться приложением, не отображая ничего в центре уведомлений, так делают, например, Pocket и Hangouts).
4. Не очень интересные нам в контексте этой темы механизмы: проигрывание звука, VoIP, взаимодействие с Bluetooth LE.
Внимание, малоизвестный факт. После закрытия приложения через меню многозадачности все эти способы работы в фоне отключаются до тех пор, пока Вы снова не запустите приложение. У этого есть как преимущества, так и недостатки. Казалось бы, отлично, будет меньше расходоваться заряд аккумулятора. Но, во-первых, может пострадать функциональность приложений, во-вторых, по факту расход аккумулятора может увеличиться за счет того, что приложение будет постоянно запускаться “с нуля” и грузить больше данных за раз, чем могло бы.
Если же приложение не использует никакие возможности для работы в фоне, при этом приложением Вы пользуетесь часто, регулярная выгрузка из памяти однозначно негативно скажется на расходе заряда. Ибо придется каждый раз грузить приложение, как в первый раз.
ВЫВОД:
Имеет смысл выгружать из памяти только те приложения, которыми редко пользуетесь. А особенно те, которые при этом используют механизмы работы в фоне.
Под “редко” я имею в виду реже, чем раз в неделю.
НО, часто выгружать из памяти приложения, которыми постоянно пользуетесь, не просто бессмысленно, а даже вредно. В этом случае процессор будет работать больше, а соответственно и энергии будет расходоваться больше.
@EmoCoder, все верно, кроме “малоизвестного факта” , background fetching и обработка VoIP push запускают приложение даже если оно не свернуто а “выгружено”, геолокация в background помоему тоже, не работал с ней но как иначе moves знает все мои передвижения будучи вырубленной. Виджеты и Apple whatch, я так понимаю, тоже запустят приложения будучи активными. Так что убивание из таск менеджера эффективно только для VoIP приложений использующих непрерывное соединение с сервером. Ну и Bluetooth LE наверное, хотя наверняка не знаю.
@burditto, про геолокацию действительно могу и соврать, не работал с ней почти. Но вот обработчик push-уведомлений совершенно точно не вызывался у насильно выгруженного приложения как минимум на iOS 8. То же самое с background fetching. В iOS 9 все изменилось, Вы проверяли?
Про виджеты и часы отдельная история, там без запущенного приложения не обойтись. И это опять таки на тему приложений, которые вредно убивать через меню многозадачности.
@Seva2006, Надо или не надо – решать вам, для того и функционал выгрузки присутствует. Про холодильник правильно привели пример. Две категории приложений – фоновые и обычные. Фоновые, если надо “гасануть”, именно так и гасятся, а обычные – замерзают, но в памяти висят, когда запускается ресурсоемкое приложение система автоматически начинает подчищать память, отсюда и вытекает дополнительное подвисание, но система сама это нормально разруливает, но можно и помочь ей ручками (вот тут и решать уже пользователю). Замороженное приложение при повторном вызове может поздглючивать в плане кеширования информации. Например у вас игрушка, которая раз в день дает какой нибудь приз, но разработчик не предусмотрел возможность перепроверки игрой текущего времени, только в момент старта игры “с нуля” такое происходит – игра сравнивает текущий день и дату последнего получения приза и выдает приз. Вот тогда нужно выгружать и перестартовывать игру. То же самое относится к программам которые при старте подгружают данные и потом не обновляют (планировщики, календари, и даже браузеры иногда)
Эй Тим!
Ты принудительно жухаешь Крейга, кода он беспокоит тебя тупыми вопросами и переводит стрелки на тебя чтобы ни за что не отвечать самому?
Калеб.
@vadimi76, мда…нет слов…
Как программист часто вижу от пользователей такое поведение: пользователи жмут те кнопки и опции в которых не понимают. Не знают их назначения или реального действия. На вопрос зачем жмут начинают мямлить “а я вот думал, а мне вот Вася сказал…”
Так вот, зачем что-то делать, не зная реального назначения функции?)
@BIG BROTHER, юзабилист вам в помощь. Не заставляйте неподготовленных пользователей думать там, где от них это не требуется)
@Roxteddy, поддерживаю идею юзабелиста, и стараюсь придерживаться философии “если программа позволила что-то сделать, значит пользователь прав”, однако и он не всегда спасет. Особенно, если речь идёт о корпоративном приложении, когда от пользователя требуется управлять бизнес-процессами. Почему-то кассиров всегда тянет, например, провести продажу не тем способом оплаты, вырубить кассу в момент печати чека, вбить не те сумму и т.п…)
@BIG BROTHER, вот не надо на корпоративный сектор гнать) Что-то привычка последнее время пошла: интегратор в свой софт пихает кучу всякого функционала, забывая про логику работы всего вместе, закрашивает это все убогим интерфейсом и толкает за млн., рассказывая, как все супер и все можно делать, все быстро, классно и вообще ребята они четкие, продукт – бенч, берите. Но если вдруг что – сами *удаки.
@wmaybach, в целом соглашусь, но ведь заказчик сам покупает софт) и потом, софт в корпоративной среде часто пишется под заказ конкретной организации.
@BIG BROTHER, покупает то, что предлагают на рынке, а чего не предлагают, того и не покупает. Да, пишется, но не так часто, потому что стоит ОООООЧЕНЬ много, может не получиться, займет много времени и ресурсов (даже на аутсорсинге). Обычно пишется софт, предлагающий какой-то функционал, полезный в работе тех или иных компаний (давайте крупные корпорации рассматривать для простоты), а потом он интегрируется уже с существующими в компании процессами и рабочими системами, соответствующим образом адаптируясь под них и др. требования. Не пишут специально CRM-ки каждый сам себе (за редким исключением), используют уже имеющиеся на рынке средства планирования, учета, мониторинга, анализа. Интеграторы адаптируют готовый софт под нужды компании. Но могу уверенно заявить, что многие из них делают это ху…. ну, вы поняли, да и предлагают откровенное Гэ, хотя по функционалу их софт превосходит многие зарубежные аналоги. Пример: презентовали мне Cross Pro, все круто, молодцы, функционал – блеск, исполнение – шлак. Почему? Потому что в компании 7 человек, из которых 1 программист. Зато 6 млн. OTRS – вообще халтура какая-то. Сегодня жду презенташку Террасофта, уже в предвкушении :D
@BIG BROTHER, Я, как пользователь, часто вижу у современных программистов такое поведение: обвешать свое творени массой кнопок и функций, назначение которых они уже и сами не помнят, а потом обвинить пользователя в том, что он нажал не ту кнопку :)
Если серьёзно, то если функция секретна, опасна и т.п., то она просто не должна быть доступна пользователю.
А по теме статьи… Она однобоко отразилу суть проблемы или, опять же, не дала ответов на все вопросы. Аккумулятор “фоновые” приложения может быть и не кушают, но что с оперативкой? Они же ведь остаются “висеть в памяти”. Потом, при запуске следующего приложения, пользователь просто сталкивается с тем, что оно или не запускается или вылетает. Странно, но закрывая приложения из упомянутого меню,можно решить проблему (да, не всегда!)с запусками или зависаниями. Особенно, учитывая ограниченный объём оперативки и отсутствием культуры оптимизации приложений.
@Dmitry Sapozhnikov, прочтите мой первый комментарий в этом обсуждении, пожалуйста. Постарался обьяснить.
@Дмитрий Бардаш, Проичтал, но звучит неубедительно про место. Про счётчик – возмжно и так, но вот с занимаемым местом – не могу согласиться.
Пусть поправят меня теоретики, если я неправ, но на практике это происходило неоднократно, что после выгрузки ненужных приложений, получалось запустить те, которые вылетали, вероятно, из-за нехватки памяти.
И только однажды пришлось потанцевать с бубном удаляя хвосты предыдущей версии не из операвтивки, а из “хранилища”.
@Dmitry Sapozhnikov, Все правильно: ваш «холодильник» просто был напичкан ненужным:) Аккумулятор/оператива/свернутые приложения – нет связи; Производительность/оператива/свернутые приложения – есть связь.
То же самое я читал о скорости работы устройства: количество открытых приложений не влияет на производительность, так как в фоне они представляют из себя только скриншоты в меню многозадачности.
Только вот у меня тяжелые игры вылетают, если открыто много приложений. Рискну предположить с батареей тоже самое.
@lopata13, тяжелые игры, как вариант, вылетают из-за нехватки оперативки. В фоне приложения замораживаются, но остаются в оперативной памяти, но на это энергии не надо.
Ну наконец-то.
Меня даже в Apple Store в Бостоне пытались уверить, что в этом причина моих проблем с зарядкой.
@twitter.com/pestrov, напишите Крэйгу, он их там прошерстит :)
Я больше скажу, если приложения закрывать, то телефон проработает меньше. Потому что если вы их НЕ закрываете, при повторном открытии есть шанс, что они ещё в оперативной памяти, и по-новой загружать их не нужно. А вот если вы “убили” приложение принудительно – в любом случае придётся вновь загружать его с диска и полностью инициализировать.
Хотя, конечно, есть исключения, которые умудряются жрать батарею, даже ничего не делая (привет, Skype).
@Rezon, Скайп, “ничего не делая”, поддерживает постоянно связь с Интернетом, отправляя и получая служебные данные, чтобы вы были “онлайн” и пр.
@wmaybach, Это всё замечательно, только у меня стоит помимо скайпа ещё 6 мессенджеров (шесть, Карл!), твиттер, два приложения почты + стандартная почта и iMessage. Но батарею жрёт только скайп. Потому что у остальных разработчиков руки прямые, и push-уведомления изначально работают так, как должны – через APN. А к Skype работа через APN изолентой сбоку примотана, и де-факто толком не работает.
@Rezon, вы немного путаете категории софта ;) Ликбез не буду проводить.
@wmaybach, Вы про VoIP, что даёт ему право на работу в фоне? Но ведь Viber тоже VoIP, с Viber Out-то. Не помню, добавили в мобильном Slack-е аудиосообщения или нет, недавно были новости, что в какой-то из версий добавили. Конечно, у Skype есть ещё видеозвонки, но Apple, насколько я помню, не выделяет видеозвонки в отдельную категорию, когда речь идёт о режимах работы в фоне.
Просто раньше Skype, во времена до покупки Microsoft, был, по сути, P2P. И сервера, как такового, не было. И с APN оно работать не могло, даже для обработки текстовых сообщений. Ему нужно было поддерживать реальное соединение. И это был кошмар. Потом, не так уж давно (года два назад) Microsoft на суперклей приделала к скайпу push-уведомления, но, судя по результатам, именно на суперклей, сбоку к уже имеющейся громоздкой конструкции, т.к. на энергопотреблении это сильно не сказалось.
Что уж там говорить, у меня Skype с год назад (когда последний раз смотрел) на компьютере под Windows, вися в трее (даже ни одного сообщения не приходило) потреблял CPU Time больше, чем Visual Studio, и Chrome, в которых я активно работал весь день (речь не о мгновенном потреблении процессора в %, а в фактическом суммарном процессорном времени). Это вот как? Как это вообще физически возможно? На OS X такая же картина была. Народ на хабре даже реверсил скайп, помнится, и писал специальную обёртку, ибо без неё скайп стучался проверять новые сообщения чуть ли не 300 раз в секунду (точное число не вспомню). Зачем – знают только разработчики скайпа. У них через него информационные каналы для высокочастотного трейдинга проброшены, не иначе)
Так что независимо от того, насколько правомерно скайп работает в фоне, и о скайпе на какой платформе мы говорим, делает он это из рук вон плохо)
@wmaybach, Впрочем, как Вы, наверное, уже догадались, я просто не люблю Skype)) Замените в моём первом сообщении Skype на любое другое приложение, неоправданно расходующее ресурсы в фоне)
На быстродействие не влияет, а на интернет соединение влияет. Некоторые приложения пререстают видеть инет если в фоне висит какой-то процесс. Это еще с 4s тянется. Так что закрывать время от времени приходится, хотя баг проявляется очень редко.
@lynch1337, ни разу ни с чем подобным не встречался (пользуюсь айфоном с 2G, если что)
Хз, но меня напрягает, когда в мониторинге памяти виду 30 мегабайт свободно из двух гигов
@booka, удали эту прогу которая тебе мегобайты показывает, вот увидишь жизнь станет проще ;)
Раньше не задумывался о оперативной памяти в айпаде, но на версиях системы 8-9 генерации пришлось.Решил поиграть в риал рейсинг 3, запустил игру и….е мое, игра пишет, запуск невозможен, не хватает оперативной памяти, для запуска игры закройте все запущенные приложения, а раньше такого и не было никогда, к слову это на моем айпаде 3 и на эйре первого поколения такие танцы. Получается выгружать нужно, яблочники сами все изгадили.
У меня висит в многозадачности всё что я когда-либо запускал никогда ничего не чистил. А так, да, многие подчищают сами за собой много раз это вижу
@mikla, прозвучало, если честно, странновато (:
К сожалению есть программы которые жрут аккумулятор даже в фоне. Их приходится закрывать.
@Amir, да, это так. Недобросовестные разработчики компрометируют политику Эппл в этой сфере.
Бред какой-то. В статье пишут, что GPS и прочее фоновые активности жрут батарейку, и тут же пишут, что закрывать не надо ничего.
Например, Facebook Messenger регистрировался раньше как плеер, и жрал в фоне ресурсы как не в себя даже при выключенном экране.
Старое приложение pebble вообще умудрялось жрать CPU в фоне, при разблокированном экране так, что телефон нагревался. Вычислить удалось только при помощи Instruments в xcode.
Для обычного пользователя рекомендую такой подход: Открываем меню батареи в настройках и видим – кто жрет в фоне, а кто не жрет. Вот тех, кто жрет, надо закрывать. Точка.
Это не панацея – тот же Pebble там не очень-то светился, а cpu жрал демон iapd, используемый им.
Если человек не лазит в меню батарейки, а просто закрывает все подряд – это тоже метод. Вместе со всеми, закроются и жруны в том числе.
Ну или слушайте сказки про волшебную оптимизацию iOS и то что она все делает сама. А детализация жора в меню батарейки Apple добавила чисто для прикола – ага.
@Arseni, ну вы ведь отдаете себе отчет, когда запускаете приложение с активным жором GPS и трафика? Чайник выключить не забываете же? А вот оставить его стоять на выключенной плите можно – кипеть не будет.
@Дмитрий Бардаш, Так надо или не надо закрывать приложения?
@Arseni, НЕ НАДО
@Дмитрий Бардаш, Блажен кто верует
@Arseni, НАДО
вот что точно не надо ставить на айфон/айпад так это приложения ФБ и ВК – постоянно висят в фоне и хавают бату заразы. Кстати и на Андроиде тоже.
Проще не ставить вообще никаких приложений и заморозить встроенные. Тогда аккумулятор держит более 2-х суток в непрерывном серфинге
Приложения выгружать надо. Есть масса приложений с корявыми разработчиками, которые жрут ресурс, будучи свернутыми. Особенно это касается приложений, которые используют геолокацию. Тот же badoo, навигация от яндекса, трипэдвайзор и тд. Даже при моём небольшом списке апп в айфоне – мне попалось несколько жрунов. С баду даже списывался по этому поводу год назад – ответ был “это не баг, а фича. Приложение трекает ваш локейшн даже будучи свернутым и это отключить нельзя.” Пришлось отключить локейшн для него вообще.
Мне как то не важно, жрёт ресурсы или нет приложение в фоне. Я на автомате, по привычке закрываю приложение, как только с него выхожу.
Однажды клиент ВК не выгрузил вечером, утром телефон потерял 20% заряда)
Если честно, постоянно закрывать приложения, тратятж на это время, на мой взгляд неразумно. Зачем создавать лишний кипиш для себя? Я лучше поставлю телефон на зарядку, чем буду постоянно заниматься такой ерундой как выгружать приложения.
Ещё заметил интересный момент. Обычно я перед сном снимаю телефон с зарядки с 100% заряженной батарейкой и ложу рядом с собой. На утро иногда остаётся те же 100% а иногда в районе 98-96%.
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.MacBook не включается после обновления до Sierra
Как создавать напоминания, которые сработают одновременно на iPhone и Android-смартфоне
Нужно ли покупать роутер с поддержкой Wi-Fi 6 для работы с iPhone 11
Как отключить надоедливые запросы оценить приложение на iPhone
Почему рабочие столы на Mac меняются местами
Как на iPhone установить 4-значный код разблокировки
Почему AirPods не зачитывают входящие уведомления
Почему не синхронизируются уведомления на iPhone и iPad