В документах Apple для разработчиков под iOS 4 все это очень четко изложено.
Когда ваше приложение закрыто или отключено, оно почти сразу "приостанавливается", что означает, что ОС замораживает состояние приложения. Когда пользователь переключается обратно на ваше приложение, ваш код продолжает работать именно там, где он отключен. Вам не нужно для добавления какого-либо кода в ваше приложение, просто скомпилируйте его с ОС 4.
Вышесказанное верно в большинстве случаев. Существует две причины, по которым «приостановленная» модель может не применяться:
1) Если устройство начинает исчерпывать память, ОС начнет отключать приостановленные приложения, которые не были переключены в течение некоторого времени, без предупреждения. Вот почему в ваших интересах, чтобы ваше приложение также запоминало его состояние, поэтому, если ваше приложение завершается, а затем снова открывается, пользователь на самом деле не замечает, потому что оно все равно возвращается туда, где они остановились.
2) Ваше приложение использует один из «фоновых» API. Они предназначены для воспроизведения аудио, услуг VoIP или услуг определения местоположения. В этом случае ваше приложение может продолжать работать в фоновом режиме, но имеет доступ только к этим API. Кроме того, ваше приложение может назначать определенные длительные задачи в качестве «фоновых задач», которые необходимо выполнить перед тем, как приложение будет приостановлено или завершено, таких как загрузка изображений в Flickr или рендеринг видео и т. Д.
Метод «фоновой задачи» не распространяется на серверы ping на неопределенный срок, поскольку для задачи существует ограничение по времени, после которого она будет принудительно остановлена. Ожидается, что приложения, которым требуется такая функциональность, будут реализовывать push-уведомления, как и раньше.
Это должно прояснить это. В общем, я думаю, что это довольно элегантное решение для многозадачности на мобильном устройстве.