Из яблока Документация .
Сообщает делегату, что приложение теперь находится в фоновом режиме.
- (void)applicationDidEnterBackground:(UIApplication *)application
Параметры
приложение
Экземпляр одноэлементного приложения.
Обсуждение
В iOS 4.0 и более поздних версиях этот метод вызывается вместо метода applicationWillTerminate:
, когда пользователь выходит из приложения, поддерживающего фоновое выполнение. Этот метод следует использовать для освобождения общих ресурсов, сохранения пользовательских данных, аннулирования таймеров и сохранения достаточного количества информации о состоянии приложения, чтобы восстановить приложение в его текущем состоянии в случае, если оно будет прекращено позднее. Вам также следует отключить обновления пользовательского интерфейса вашего приложения и избегать использования некоторых типов общих системных ресурсов (таких как база данных контактов пользователя). Также необходимо избегать использования OpenGL ES в фоновом режиме.
Ваша реализация этого метода имеет приблизительно пять секунд для выполнения любых задач и возврата. Если вам требуется дополнительное время для выполнения каких-либо окончательных задач, вы можете запросить дополнительное время выполнения у системы, позвонив по номеру beginBackgroundTaskWithExpirationHandler:
. На практике вы должны вернуться с applicationDidEnterBackground:
как можно быстрее. Если метод не возвращается до истечения времени, ваше приложение завершается и удаляется из памяти.
Вы должны выполнить любые задачи, связанные с настройкой пользовательского интерфейса, до выхода из этого метода, но другие задачи (например, сохранение состояния) следует переместить в параллельную очередь отправки или вторичный поток по мере необходимости. Поскольку вполне вероятно, что любые фоновые задачи, которые вы запускаете в applicationDidEnterBackground:
, не будут выполняться до тех пор, пока не завершится этот метод, вам следует запросить дополнительное время фонового выполнения перед запуском этих задач. Другими словами, сначала вызовите beginBackgroundTaskWithExpirationHandler:
, а затем запустите задачу в очереди отправки или во вторичном потоке.
Приложение также отправляет уведомление UIApplicationDidEnterBackgroundNotification
примерно в то же время, когда оно вызывает этот метод, чтобы дать заинтересованным объектам возможность ответить на переход.