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