Делает ли iOS 4 «Real Multitasking» доступным сторонним разработчикам? - PullRequest
10 голосов
/ 09 июня 2010

С тех пор, как вышла первая бета-версия, я пытался выяснить, возможна ли «настоящая» многозадачность, то есть вы можете поместить программу в фоновом режиме и бесконечно висеть на сетевом соединении?

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

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

Ответы [ 10 ]

10 голосов
/ 09 июня 2010

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

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

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

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

8 голосов
/ 16 июня 2010

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

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

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

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

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

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

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

1 голос
/ 09 декабря 2010

В iOS 4.2 даже нет реальной многозадачности.потому что приложениям будет позволено завершить задачу, связанную с состояниями ... в течение небольшого промежутка времени, а затем она будет находиться в приостановленном состоянии. Если вы установите фоновую задачу на длительный промежуток времени, то ... она будет вести себя неожиданно, какНикакой метод не будет вызван, когда вы попытаетесь запустить приложение из любого места.

1 голос
/ 28 июня 2010

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

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

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

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

1 голос
/ 26 июня 2010

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

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

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

1 голос
/ 16 июня 2010

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

1 голос
/ 09 июня 2010

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

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

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

0 голосов
/ 19 мая 2011

Вы должны использовать платформу push-уведомлений для создаваемого набора функций!

0 голосов
/ 02 декабря 2010

на самом деле вы можете сделать это, хотя это не разрешено Apple.тебе нужно установить набор инструментов в вашем Mac и использовать какой-нибудь неофициальный SDK ...

check http://code.google.com/p/iphone-backgrounder/ для получения дополнительной информации

0 голосов
/ 09 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...