UIApplicationDidEnterBackgroundNotification - PullRequest
7 голосов
/ 01 февраля 2011

что такое UIApplicationDidEnterBackgroundNotification в приложении для iPhone или как мы можем извлечь из него выгоду

Ответы [ 2 ]

25 голосов
/ 10 февраля 2011

Это уведомление означает, что пользователь «закрывает» ваше приложение на 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];

Удачи!

Одед.

3 голосов
/ 01 февраля 2011

Из яблока Документация .

Сообщает делегату, что приложение теперь находится в фоновом режиме.

- (void)applicationDidEnterBackground:(UIApplication *)application

Параметры приложение Экземпляр одноэлементного приложения.

Обсуждение В iOS 4.0 и более поздних версиях этот метод вызывается вместо метода applicationWillTerminate:, когда пользователь выходит из приложения, поддерживающего фоновое выполнение. Этот метод следует использовать для освобождения общих ресурсов, сохранения пользовательских данных, аннулирования таймеров и сохранения достаточного количества информации о состоянии приложения, чтобы восстановить приложение в его текущем состоянии в случае, если оно будет прекращено позднее. Вам также следует отключить обновления пользовательского интерфейса вашего приложения и избегать использования некоторых типов общих системных ресурсов (таких как база данных контактов пользователя). Также необходимо избегать использования OpenGL ES в фоновом режиме.

Ваша реализация этого метода имеет приблизительно пять секунд для выполнения любых задач и возврата. Если вам требуется дополнительное время для выполнения каких-либо окончательных задач, вы можете запросить дополнительное время выполнения у системы, позвонив по номеру beginBackgroundTaskWithExpirationHandler:. На практике вы должны вернуться с applicationDidEnterBackground: как можно быстрее. Если метод не возвращается до истечения времени, ваше приложение завершается и удаляется из памяти.

Вы должны выполнить любые задачи, связанные с настройкой пользовательского интерфейса, до выхода из этого метода, но другие задачи (например, сохранение состояния) следует переместить в параллельную очередь отправки или вторичный поток по мере необходимости. Поскольку вполне вероятно, что любые фоновые задачи, которые вы запускаете в applicationDidEnterBackground:, не будут выполняться до тех пор, пока не завершится этот метод, вам следует запросить дополнительное время фонового выполнения перед запуском этих задач. Другими словами, сначала вызовите beginBackgroundTaskWithExpirationHandler:, а затем запустите задачу в очереди отправки или во вторичном потоке.

Приложение также отправляет уведомление UIApplicationDidEnterBackgroundNotification примерно в то же время, когда оно вызывает этот метод, чтобы дать заинтересованным объектам возможность ответить на переход.

...