С тех пор, как первая бета вышла, я пытался узнать, возможна ли “реальная” многозадачность — т.е. можно ли поместить программу в фоновом режиме и иметь ли ее, держатся за сетевое соединение неограниченно долго?
Я думаю о IM или приложениях IRC, например. Я скомпилировал приложение сам на iOS 4, и не изменяя вещь, это, казалось, осталось рабочим в фоновом режиме, но кто знает это было просто приостановлено к памяти.
В документах говорится, что лучшее, которое можно сделать, запросить до 10 минут, но в презентации разработчика они представили Skype, находящийся в фоновом режиме и затем уведомляющий пользователя, что вызов входил. Кто-либо знает наверняка как это все работы?
Похоже, ответ отрицательный. API для Skype - это особый случай, называемый режимом «voip», который требует особого поведения, такого как маркировка используемого сокета для VoIP.
Вы можете получать уведомления о будильниках в фоновом режиме (например, о прошедшем времени). Время, в течение которого вы находитесь в фоновом режиме, сильно ограничено ОС.
Фоновая модель Android завершена и во многих отношениях намного лучше.
У Apple есть руководство под названием «Поддержка многозадачности в ваших приложениях», которое вы должны найти.
Возможно, вас заинтересует это сообщение в блоге , в котором описывается, как «многозадачность» работает в таких системах, как iPhone OS 4 и Android.
Приложения iOS 4 могут быть либо запущены , либо приостановлены . Операционная система будет пытаться сохранить в памяти как можно больше запрошенных приложений, в то время как все остальные приложения будут приостановлены.
Приложения, работающие в фоновом режиме , могут получать доступ к таким функциям, как навигация, аудио и VOIP (но НЕ обмен мгновенными сообщениями). Похоже, тебе не повезло.
Приложения могут запрашивать время в фоновом режиме. Прочтите документацию. Я бы сказал, что iOS - это «управляемая многозадачность».
Разработчик Apple iOS 4 в документации все это очень четко изложено.
Когда ваше приложение закрывается или отключается, оно почти сразу же «приостанавливается», то есть ОС замораживает состояние приложения. Когда пользователь переключается обратно в ваше приложение, ваш код продолжает работать там, где он остановился. Для этого вам не нужно добавлять какой-либо код в ваше приложение, просто скомпилируйте его для ОС 4.
Вышесказанное верно в большинстве случаев. Есть две причины, по которым "приостановленная" модель может не применяться:
1) Если на устройстве начинает заканчиваться память, ОС начинает без предупреждения завершать приостановленные приложения, на которые не выполнялось переключение какое-то время. Вот почему в ваших интересах, чтобы ваше приложение также запомнило свое состояние, поэтому, если ваше приложение было прекращено, а затем снова открыто, пользователь на самом деле не замечает, потому что оно все равно возвращается туда, где они остановились.
2) Ваше приложение использует один из «фоновых» API. Они предназначены для воспроизведения звука, услуг VoIP или служб определения местоположения. В этом случае вашему приложению разрешено продолжать работу в фоновом режиме, но он имеет доступ только к этим API.Кроме того, ваше приложение может обозначать определенные длительные задачи как «фоновые задачи», которые необходимо выполнить до того, как приложение будет приостановлено или прекращено, например, загрузка изображений на Flickr, рендеринг видео и т. Д.
Метод «фоновой задачи» не распространяется на pinging-серверы на неопределенный срок, так как есть ограничение по времени для задачи, по истечении которого она будет принудительно остановлена. Ожидается, что приложения, которым требуются такие функции, будут реализовывать push-уведомления, как и раньше.
Это должно прояснить это. В целом, я считаю, что это довольно элегантное решение для многозадачности на мобильном устройстве.
Вы можете создать длительную фоновую задачу, я считаю, что они могут включать сетевые функции. Просто нужно установить флаг фоновой задачи на рабочем блоке.
ОС может точно ограничить, сколько времени вы получите, хотя ... вы, когда ваше время истекает, давая вам возможность хорошо убраться.
iOS 4 в некоторой степени обладает «настоящей» многозадачностью. Следует учитывать две вещи:
В настоящее время одним из этих критериев является ограничение времени выполнения до 10 минут (в реальном времени, а не в процессоре). Однако я ожидаю, что это изменится и увижу лучшие критерии для завершения фонового приложения (надеюсь).
Помимо этого, вы можете иметь таймеров (циклов событий) в фоновом режиме .