iOS 4 делает “Реальную Многозадачность” доступной для сторонних разработчиков?

С тех пор, как первая бета вышла, я пытался узнать, возможна ли “реальная” многозадачность — т.е. можно ли поместить программу в фоновом режиме и иметь ли ее, держатся за сетевое соединение неограниченно долго?

Я думаю о IM или приложениях IRC, например. Я скомпилировал приложение сам на iOS 4, и не изменяя вещь, это, казалось, осталось рабочим в фоновом режиме, но кто знает это было просто приостановлено к памяти.

В документах говорится, что лучшее, которое можно сделать, запросить до 10 минут, но в презентации разработчика они представили Skype, находящийся в фоновом режиме и затем уведомляющий пользователя, что вызов входил. Кто-либо знает наверняка как это все работы?

10
задан Paul D. Waite 18 March 2011 в 15:55
поделиться

7 ответов

Похоже, ответ отрицательный. API для Skype - это особый случай, называемый режимом «voip», который требует особого поведения, такого как маркировка используемого сокета для VoIP.

Вы можете получать уведомления о будильниках в фоновом режиме (например, о прошедшем времени). Время, в течение которого вы находитесь в фоновом режиме, сильно ограничено ОС.

Фоновая модель Android завершена и во многих отношениях намного лучше.

У Apple есть руководство под названием «Поддержка многозадачности в ваших приложениях», которое вы должны найти.

10
ответ дан 3 December 2019 в 17:19
поделиться

Возможно, вас заинтересует это сообщение в блоге , в котором описывается, как «многозадачность» работает в таких системах, как iPhone OS 4 и Android.

0
ответ дан 3 December 2019 в 17:19
поделиться

Приложения iOS 4 могут быть либо запущены , либо приостановлены . Операционная система будет пытаться сохранить в памяти как можно больше запрошенных приложений, в то время как все остальные приложения будут приостановлены.

Приложения, работающие в фоновом режиме , могут получать доступ к таким функциям, как навигация, аудио и VOIP (но НЕ обмен мгновенными сообщениями). Похоже, тебе не повезло.

- Многозадачность PC World на Apple iPhone 4

1
ответ дан 3 December 2019 в 17:19
поделиться

Приложения могут запрашивать время в фоновом режиме. Прочтите документацию. Я бы сказал, что iOS - это «управляемая многозадачность».

1
ответ дан 3 December 2019 в 17:19
поделиться

Разработчик Apple iOS 4 в документации все это очень четко изложено.

Когда ваше приложение закрывается или отключается, оно почти сразу же «приостанавливается», то есть ОС замораживает состояние приложения. Когда пользователь переключается обратно в ваше приложение, ваш код продолжает работать там, где он остановился. Для этого вам не нужно добавлять какой-либо код в ваше приложение, просто скомпилируйте его для ОС 4.

Вышесказанное верно в большинстве случаев. Есть две причины, по которым "приостановленная" модель может не применяться:

1) Если на устройстве начинает заканчиваться память, ОС начинает без предупреждения завершать приостановленные приложения, на которые не выполнялось переключение какое-то время. Вот почему в ваших интересах, чтобы ваше приложение также запомнило свое состояние, поэтому, если ваше приложение было прекращено, а затем снова открыто, пользователь на самом деле не замечает, потому что оно все равно возвращается туда, где они остановились.

2) Ваше приложение использует один из «фоновых» API. Они предназначены для воспроизведения звука, услуг VoIP или служб определения местоположения. В этом случае вашему приложению разрешено продолжать работу в фоновом режиме, но он имеет доступ только к этим API.Кроме того, ваше приложение может обозначать определенные длительные задачи как «фоновые задачи», которые необходимо выполнить до того, как приложение будет приостановлено или прекращено, например, загрузка изображений на Flickr, рендеринг видео и т. Д.

Метод «фоновой задачи» не распространяется на pinging-серверы на неопределенный срок, так как есть ограничение по времени для задачи, по истечении которого она будет принудительно остановлена. Ожидается, что приложения, которым требуются такие функции, будут реализовывать push-уведомления, как и раньше.

Это должно прояснить это. В целом, я считаю, что это довольно элегантное решение для многозадачности на мобильном устройстве.

8
ответ дан 3 December 2019 в 17:19
поделиться

Вы можете создать длительную фоновую задачу, я считаю, что они могут включать сетевые функции. Просто нужно установить флаг фоновой задачи на рабочем блоке.

https://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

ОС может точно ограничить, сколько времени вы получите, хотя ... вы, когда ваше время истекает, давая вам возможность хорошо убраться.

1
ответ дан 3 December 2019 в 17:19
поделиться

iOS 4 в некоторой степени обладает «настоящей» многозадачностью. Следует учитывать две вещи:

  • Цикл событий пользовательского интерфейса является однозадачным. Таким образом, в цикле событий пользовательского интерфейса выполняется только переднее приложение. Ничего страшного: отделите основной код от цикла событий пользовательского интерфейса (возможно, вам нужно изменить дизайн приложения).
  • ОС «может» завершить работу вашего приложения, если соблюдены некоторые критерии (например, нехватка памяти).

В настоящее время одним из этих критериев является ограничение времени выполнения до 10 минут (в реальном времени, а не в процессоре). Однако я ожидаю, что это изменится и увижу лучшие критерии для завершения фонового приложения (надеюсь).

Помимо этого, вы можете иметь таймеров (циклов событий) в фоновом режиме .

1
ответ дан 3 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: