iphone: многозадачность в iphone невозможна

#iphone

#iPhone

Вопрос:

Поддерживает ли iphone многозадачность для сторонних приложений.Кто-нибудь может объяснить мне, как.

Комментарии:

1. Серьезно? Прочитайте книгу, которая прилагается к вашему iPhone. Поддерживается с iOS 4.0. Также смотрите: apple.com/iphone/features/multitasking.html

2. Я не имею в виду, что ОС не поддерживает многозадачность (может разговаривать с кем-то по телефону, читая некоторые данные из электронной почты). Это ограничивает многозадачность для сторонних приложений. Это позволяет сторонним приложениям сохранять его состояние и выполняет другую работу. когда вернетесь, восстановите приложение с того места, где мы его оставили. Но это не позволяет стороннему приложению выполнять свою работу в фоновом режиме. Пожалуйста, поправьте меня, если я ошибаюсь.

3. Зависит от приложения и того, что это за «работа». Существуют определенные исключения, например, музыкальный проигрыватель может продолжать воспроизводить музыку во время работы в фоновом режиме. Apple очень четко объясняет эти исключения в документации. Прочитав это, вы продвинетесь гораздо дальше к ответу, чем кто-либо разместит здесь.

Ответ №1:

Предполагая, что ваше устройство новее, чем iPhone 3G (или iPod Touch 1-го поколения), тогда да, ваше приложение может работать в фоновом режиме. Обратите внимание, что даже iOS4 не разрешает многозадачность на старых устройствах. Что происходит в iOS4 и выше, так это то, что когда вы нажимаете кнопку «Домой» из приложения, оно переключает текущее приложение в фоновый режим, однако оно все еще работает.

При работе с играми это означает, что вы должны использовать делегат приложения, чтобы приостановить игру, когда приложение отправляется в фоновый режим, и (необязательно) возобновить ее, когда оно вернется, или представить «меню паузы». Также следует переключиться на цикл рендеринга с низким / холостым ходом (4 кадра в секунду или аналогичный), однако с приложениями для iPad следует соблюдать особую осторожность, которые не позволяют выполнять рендеринг OpenGL в приложении, которое в данный момент работает в фоновом режиме (по моему опыту). В этих случаях вы должны полностью отключить цикл рендеринга OpenGL. Эти шаги предотвратят использование вашим приложением ненужной вычислительной мощности в фоновом режиме.

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

Комментарии:

1. Нужно ли моему приложению устанавливать делегат, чтобы позаботиться об этом при запуске в фоновом режиме. Я разрабатываю приложение для восстановления файлов журнала с другого устройства. Итак, мое приложение должно реализовать делегат для обработки этого восстановления, если оно переходит в фоновый режим, не так ли. Я не в курсе цикла рендеринга OpenGL.

2. Делегат приложения, созданный с помощью XCode iPhone template projects, должен реализовывать (или содержать, с комментариями) все функции, которые обеспечивают переключение задач между передним планом и фоном. Если вы не выполняете никакого рендеринга графики (т. Е. это не игра), то вам не нужно беспокоиться об OpenGL.

3. Спасибо badgerr за то, что помог мне разобраться.

4. @badgerr-Как мое приложение узнает, что ядро поместило его в пространство подкачки, и все равно оно должно работать в фоновом режиме (отправка и повторный возврат файлов). Как мой делегат выполняет эту функцию?