У меня есть приложение, которое работает хорошо над iPhone OS 3.0 или выше. Как я поддерживаю быстрое приложение, переключающееся в него? Это должно работать, как находится на iPhone OS 3.0, но поддерживайте быстрое приложение, включают iOS 4.0.
Anupam
Установите для базового SDK значение 4.0, а для цели развертывания - 3.0. Теперь должно работать быстрое переключение приложений.
Чтобы ваше приложение работало должным образом, когда оно находится в фоновом режиме, и чтобы убедиться, что вы сохранили свое состояние достаточно рано, вы должны полностью прочитать главу о многозадачности в Руководстве по программированию приложений для iPhone и следовать ей, особенно Поддержка фонового состояния Переходы и как ответственное, многозадачное приложение .
Есть отличное видео сессии с WWDC об этом под названием "Сессия 105 - Принятие многозадачности на iPhone OD, часть 1", которое объясняет протекание процесса между различными режимами переднего плана и фона, а также в какое время вы получаете вызовы делегата приложения, и, что более важно, когда нет. Я настоятельно рекомендую его в дополнение к уже упомянутой документации. Для зарегистрированных разработчиков она бесплатна.
Суть в том, что хотя iOS 4.0 уведомляет вас, когда вы переходите в состояние фонового выполнения, и у вас есть время сохранить свое состояние, вы не получаете уведомления, когда ваше приложение действительно завершается, поэтому, как только вы ненадолго переходите в состояние фонового выполнения, вам рекомендуется как сохранить свое состояние, так и выключить все ненужные ресурсы. Это обеспечит меньшую вероятность того, что ваше приложение будет полностью завершено, когда память начнет заканчиваться, что iOS делает автоматически.
Еще один момент, который следует учитывать: хотя iOS 4.0 делает полное сохранение состояния за вас (при условии, что ваше приложение было перекомпилировано/развернуто для 4.0), это относится только к приостановке уже запущенных приложений. Вам все еще нужно написать свою собственную реализацию для восстановления приложения в той точке, где пользователь остановился, если оно было приостановлено, в конечном итоге полностью завершено, а пользователь затем снова запустил его.