Усі ми знаємо урок «багатозадачність = можливість виконувати кілька процесів одночасно». Ми використовуємо його в наших комп’ютерах, навіть не підозрюючи про його наявність. Перемикання між програмами або вікнами однієї програми відбувається (для нас) у режимі реального часу, і ми сприймаємо цю можливість операційної системи як належне.
Завдання різне
Операційна система розподіляє процесор для всіх програм через невеликі проміжки часу. Ці проміжки часу настільки малі, що ми не можемо їх помітити, тому здається, ніби всі програми використовують процесор одночасно. Ми могли б так подумати багатозадачність в iOS 4 працює точно так само. Це не так. Основною причиною є, звичайно, ємність акумулятора. Якби всі програми справді залишалися працювати у фоновому режимі, нам, ймовірно, довелося б шукати сокет за кілька годин.
Більшість програм, сумісних з iOS 4, переходять у «режим призупинення» або в сплячий режим після натискання кнопки «Додому». Аналогією може бути закриття кришки ноутбука, який одразу переходить у сплячий режим. Після відкриття кришки ноутбук виходить з режиму сну і все в тому ж стані, що і до закриття кришки. Крім того, є програми, у яких натискання кнопки «Додому» призводить до їх завершення. Під цим ми маємо на увазі справжнє припинення. Розробники мають вибір, який із цих методів використовувати.
Але є й інша категорія додатків. Це програми, які дійсно працюють у фоновому режимі, навіть якщо ви робите щось зовсім інше на своєму iDevice. Хорошим прикладом є Skype, оскільки йому потрібне постійне підключення до Інтернету. Іншими прикладами можуть бути програми, що відтворюють фонову музику (Pandora), або програми, які потребують постійного використання GPS. Так, ці програми споживають акумулятор, навіть якщо працюють у фоновому режимі.
Спати чи збивати?
Певні програми, сумісні з iOS 4, які слід перевести в сплячий режим (перевести в «призупинений режим») після натискання кнопки «Додому», продовжують працювати у фоновому режимі. Apple дала розробникам рівно десять хвилин, щоб додаток виконав своє завдання, яким би воно не було. Припустімо, ви завантажуєте файл у GoodReader. Раптом хтось хоче зателефонувати вам, і ви просто повинні прийняти цей важливий дзвінок. Дзвінок не тривав більше десяти хвилин, ви повернетеся в додаток GoodReader. Можливо, файл уже завантажено або ще завантажується. Що робити, якщо дзвінок триває більше десяти хвилин? Додаток, у нашому випадку GoodReader, повинен буде припинити свою діяльність і повідомити iOS, що його можна перевести в режим сну. Якщо вона цього не зробить, вона буде безжально припинена самою iOS.
Тепер ви знаєте різницю між «мобільною» та «настільною» багатозадачністю. У той час як плавність і швидкість перемикання між програмами важливі для комп’ютера, час автономної роботи завжди є найважливішим для мобільних пристроїв. Багатозадачність також потрібно було адаптувати до цього факту. Тому, прочитавши цю статтю, якщо ви двічі натиснете кнопку «Додому», ви більше не побачите «панель програм, що працюють у фоновому режимі», а по суті лише «список нещодавно використаних програм».
Автор: Даніель ГрушкаДжерело: onemoretap.com
хм, цікаво :) Я завжди думав, що це завжди схоже на те, як це можна зробити в Unix. Що програмі було виділено нульовий процесорний час, а процес просто сидить у пам’яті, усі ресурси виділено. тому мені довелося двічі натиснути «Додому» та негайно зупинити програму, щоб видалити її. Чи означає це, що навіть якщо на нижньому прихованому аркуші є значок програми, програма все одно закрита давно (через 10 хвилин)?
У нижньому списку є лише останні відкриті програми, причому деякі з них все ще можуть працювати, деякі призупинено, а деякі повністю припинено. Видалення програми зі списку вручну має «побічний ефект»: якщо вона запущена (або призупинена), її роботу буде припинено.
Додаток повинен сам розповісти про ці 10 додаткових хвилин, і немає гарантії, що він їх отримає.
Що ж, це не позбулося моєї одержимості закривати програму зі списку (а якщо вона випадково з’їсть ресурси, чи не так? :-D)
Я розумію, що 10 хвилин призначені для програм, які повинні працювати у фоновому режимі та не підпадають під категорію «Skype, GPS і відтворення музики». Інші програми переходять у режим призупинення та залишаються в пам’яті, доки пам’ять не знадобиться для інших речей.
Перевага режиму призупинення полягає в тому, що якщо вам потрібно закрити програму, ви не втратите її дані, усе буде збережено в момент переходу в режим призупинення.
або, наприклад, у випадку відтворення, еквівалент команди bg / fg
А як щодо плеєра чи інших програм, які працюють у фоновому режимі протягом будь-якого часу? Я маю на увазі, чи маю я право «вибирати» як розробника, чи це має якось схвалити Apple?
Щоб програма дійсно працювала у фоновому режимі необмежений час, вона повинна виконати (зареєструвати) одну з наступних дій:
– Використовуйте служби визначення місцезнаходження (GPS)
– Відтворення музики у фоновому режимі
– Використовуйте VOIP (голос через IP)
Судячи з назви (погляд під капот), я очікував, що стаття міститиме дещо розширеніше пояснення з технічними деталями. Це більше схоже на переекс до статті. Якщо це perex, то коли буде продовження? Чи можете ви отримати відшкодування? :-)
а що б ти хотіла дізнатися детальніше?
Від статті з назвою «під капотом» я б очікував детального технічного опису (автор міг би проаналізувати, наприклад, накладні витрати під час перемикання програм або як обробляється одночасний доступ до системних ресурсів), порівняння з іншими моделями (наприклад, зі зламаним iPhone). Ідеально підкріпити це деякими вимірюваннями. Я просто очікував набагато більшого від статті, у заголовку якої є «під капотом», ніж від цього дуже поверхневого опису.
Чи є будь-який клієнт icq, який працює постійно у фоновому режимі, як skype, і не розриває з’єднання?
програма має 10 секунд, щоб перейти в режим призупинення, а не 10 хвилин... і під час цього процесу деякі частини можуть або не можуть «зависати» на серверних службах, деякі з яких уже перераховані вище - це те, що Apple називає «розумними» "багатозадачність.... потім система її збила
Додатку може знадобитися додатковий час, якщо щось завантажується, завантажується або обробляється. Це не має нічого спільного з GPS, VoIP або відтворенням музики, які працюють у мінімалістичному режимі необмежений час.