Все мы знаем урок «многозадачность = способность выполнять несколько процессов одновременно». Мы используем его в наших компьютерах, даже не осознавая его присутствия. Переключение между приложениями или окнами одного приложения происходит (у нас) в реальном времени и мы воспринимаем эту возможность операционной системы как должное.
Задача другая
Операционная система выделяет процессор всем приложениям через небольшие промежутки времени. Эти временные промежутки настолько малы, что мы не можем их заметить, поэтому создается впечатление, будто все приложения используют процессор одновременно. Мы могли бы так подумать многозадачность в 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)
Судя по названию (заглянуть под капот), я ожидал, что статья будет содержать несколько более обширное объяснение с техническими подробностями. Это больше похоже на перекс к статье. Если это перекс, то когда продолжение? Можете ли вы получить возмещение? :-)
и что бы вы хотели узнать подробнее?
От статьи с "под капотом" в названии я ожидал подробного технического описания (автор мог бы проанализировать, например, накладные расходы при переключении приложений или как осуществляется одновременный доступ к системным ресурсам), сравнение с другими моделями (например, с взломанным iPhone). Идеально подкрепить это некоторыми измерениями. Я просто ожидал гораздо большего от статьи, в названии которой есть слово «под капотом», чем от этого очень поверхностного описания.
Есть ли какой-нибудь клиент icq, который постоянно работает в фоновом режиме, например Skype, и не разрывает соединение?
у приложения есть 10 секунд, чтобы перейти в режим ожидания, а не 10 минут... и во время этого процесса некоторые части могут или не могут "зависать" на серверных службах, некоторые из которых уже были перечислены выше - это то, что Apple называет "умным" "Многозадачность.... затем система сбила ее
Приложению может потребоваться дополнительное время, если что-то загружается, загружается или обрабатывается. Это не имеет никакого отношения к GPS, VoIP или воспроизведению музыки, которые работают в минималистическом режиме неограниченное время.