Надані відповіді точні, я просто хочу уточнити з точки зору розробника iOS.
iOS розроблений для управління якомога більшою кількістю речей, щоб вам (і розробникам) не потрібно про них хвилюватися. Кінцевим результатом є дещо послідовний підхід у всіх програмах, у тому числі в Apple (навіть іноді Apple сам вирізає куточки).
Як сказано, передумова:
- iOS знає більше про пам'ять, ніж ми. Він знає, скільки його має, і скільки йому потрібно (певною мірою).
- iOS має повний контроль над пам'яттю; у ньому є заключне слово про те, хто що використовує.
- Якщо iOS потребує пам’яті, вона знайде її, і це зазвичай робиться шляхом вбивства інших процесів, які вже деякий час простоюють (а за кулісами є багато правил, ми їх не знаємо всі, і насправді не дуже переживайте за них).
- Все, що робить процесор (процесор), забирає енергію. Абсолютно все. Не забувайте, що комп'ютери - це просто крихітні контейнери для електронів, які переміщують їх по дуже маленьких просторах.
- Коли програма вбита, є деякі узгоджені протоколи (контракти), які визначають, що потрібно зробити. iOS застосовує та виконує ці протоколи. Але робота повинна бути виконана, це не безкоштовно і, звичайно, не завжди дешево (це дійсно залежить від того, що це додаток).
Сказавши все це, людина передбачає, що більшість користувачів закривають додатки, сподіваючись збільшити час автономної роботи, створюючи враження, що, закриваючи речі, витрачається менше енергії на підтримку роботи цих додатків.
Правда полягає в тому, що в iOS це майже ніколи не буває. Коли ви натискаєте додому, додаток призупиняється, і він більше не використовує ресурси, які можуть знадобитися іншому додатку. Якщо новій програмі (або навіть iOS) потрібна ця пам’ять, вона подбає про неї сама, але лише в разі потреби.
Якщо ви закриваєте додатки знову і знову, змушуєте iOS зробити цю потенційно дорогу задачу по-справжньому вивантажити додаток, зберегти його стан і що ні, з додатковою проблемою, що при повторному відкритті програми все це потрібно повернути. і, залежно від складності програми, багато чого потрібно прочитати зі зберігання даних, в основну пам'ять телефону тощо. Цієї додаткової роботи можна було б уникнути, якби просто дозволити додатку залишатися у своєму "призупиненому" стані.
Однак …
У деяких випадках (і вони рідкісні, але не неможливо рідкісні), ви хочете вбити додатки, які погано поводяться. Прикладами є (але не обмежуються ними): додатки, які займаються фоновим звуком або асинхронними службами, такими як місцеположення (де додаток запитує місцеположення, а iOS повинен ходити і запитувати, де це, наприклад, запускаючи GPS, якщо це потрібно) , потокове відео тощо.
У мене було безліч прикладів таких програм, як Lyft, United Airlines, навіть Twitter, які в кінцевому результаті перебувають у порушеному стані (або просто не працюють належним чином), тому що ви в поганій мережі (iOS дуже погано відновлення з поганих мереж за останні 3-4 випуски) або мережа просто не відповідає належним чином.
З часом більшість цих проблем, як правило, зникають, і додаток знову починає працювати; але якщо вам дійсно потрібен додаток для роботи зараз , вам доведеться йти вперед і платити ціну за те, щоб його вбити і перезапустити з нуля. Ви використовували більше акумулятора, роблячи це, але, ей, він вам потрібен.
І якщо це було заплутано, я можу навести вам аналогію з автомобілем, тому що ми, як правило, робимо весь час.
Аналогія автомобіля
Я знаю, що технологія автомобілів просунулася, і це вже не хороший приклад, але тут зі мною пограйте .
Палюючи двигун автомобіля, який використовував більше палива, а не простой. Коли в машинах були карбюратори замість форсунок, це було ще гірше; Ось чому вимкнення двигуна, коли ви зупиняєтесь на червоне світло, теоретично може використовувати більше палива, ніж просто холостий хід. Новіші машини мають набагато ефективніший механізм і можуть зупинити двигун, але залишайтеся в напівзапущеному стані (не будемо тут занадто сильно заїжджати в машини).
Ви закриваєте програми, це еквівалент особі, яка вимикає машину на кожному зупинці. На відміну від того, щоб просто пустити його в режим очікування, поки вам це не потрібно знову, як правило, через кілька секунд.
Аналогія не є досконалою, правда, простоюючі машини все ще використовують паливо, тоді як підвісні програми - ні; проте в очах телефону вони не використовують нічого, пов’язаного з пам'яттю / батареєю (до тих пір, поки вони не мають активної фонової обробки, очевидно).
Ви в основному вимикаєте двигун щоразу, коли ви вбиваєте додаток, і ви не дозволяєте iOS "розумному" механізму холостого ходу двигуна піклуватися про нього, тому коли світло стане зеленим, ви можете просто натиснути прискорювач і двигун працює швидше, ніж якби він був стовідсотково зупинений. Запускаючи двигун із зупиненого стану, також витрачається більше енергії, ніж просто паливо, потрібно повернути стартер, щоб двигун можна було запускати, впорскувати паливо та створювати іскри, так що ... це велика робота за кадром. Програми - це як двигуни. :)