UIApplicationDidEnterBackgroundNotification
Какая польза от UIApplicationDidEnterBackgroundNotification
в приложении для iPhone или как извлечь из него выгоду
2 ответа
Это уведомление означает, что пользователь "закрывает" ваше приложение на iPhone 4. Это происходит, когда поступает телефонный звонок или текстовое сообщение, и пользователь принимает прерывание (ответы / ответы) или когда пользователь нажимает кнопку "Домой".
Я нашел эту ссылку в SO, которая показывает взаимодействие между всеми государствами и соответствующие уведомления: http://www.drobnik.com/touch/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/
Чтобы использовать это уведомление, вы можете реализовать applicationDidEnterBackground, как предложено @Antwan (в вашем классе UIApplicationDelegate - это основной класс).
В качестве альтернативы вы можете установить обработчик уведомлений, где вы хотите / нуждаетесь в своем коде:
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(handleEnteredBackground:)
name: UIApplicationDidEnterBackgroundNotification
object: nil];
Удачи!
Одед.
Из яблочной документации.
Сообщает делегату, что приложение теперь находится в фоновом режиме.
- (void)applicationDidEnterBackground:(UIApplication *)application
Параметры application Экземпляр единственного приложения.
Обсуждение В iOS 4.0 и более поздних версиях этот метод вызывается вместо applicationWillTerminate:
метод, когда пользователь выходит из приложения, поддерживающего фоновое выполнение. Этот метод следует использовать для освобождения общих ресурсов, сохранения пользовательских данных, аннулирования таймеров и сохранения достаточного количества информации о состоянии приложения, чтобы восстановить приложение в его текущем состоянии на случай, если оно будет прекращено позднее. Вам также следует отключить обновления пользовательского интерфейса вашего приложения и избегать использования некоторых типов общих системных ресурсов (например, базы данных контактов пользователя). Также необходимо избегать использования OpenGL ES в фоновом режиме.
Ваша реализация этого метода имеет примерно пять секунд для выполнения любых задач и возврата. Если вам нужно дополнительное время для выполнения каких-либо окончательных задач, вы можете запросить дополнительное время выполнения у системы, позвонив beginBackgroundTaskWithExpirationHandler:
, На практике вы должны вернуться из applicationDidEnterBackground:
как можно быстрее. Если метод не возвращается до истечения времени, ваше приложение завершается и удаляется из памяти.
Вы должны выполнить любые задачи, связанные с настройкой пользовательского интерфейса, до выхода из этого метода, но другие задачи (например, сохранение состояния) следует переместить в параллельную очередь отправки или вторичный поток по мере необходимости. Потому что это, скорее всего, любые фоновые задачи applicationDidEnterBackground:
не будет работать до тех пор, пока этот метод не завершится, вам следует запросить дополнительное время фонового выполнения перед запуском этих задач. Другими словами, первый звонок beginBackgroundTaskWithExpirationHandler:
и затем запустите задачу в очереди отгрузки или вторичном потоке.
Приложение также публикует UIApplicationDidEnterBackgroundNotification
Примерно в то же время уведомление вызывает этот метод, чтобы дать заинтересованным объектам возможность ответить на переход.