Подтвердить что ты не робот

ApplicationWillTerminate в iOS 4.0

Метод делегирования applicationWillTerminate не вызывается в iOS 4.0  Когда я нажимаю кнопку "Домой", я вижу, как вызываются методы делегирования applicationWillResignActive и applicationDidEnterBackground.

 - (void)applicationWillResignActive:(UIApplication *)application
{
  NSLog(@"Application Did Resign Active");
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSLog(@"Application Did Enter Background");
}

И когда я дважды нажимаю кнопку "Домой" и снова запускаю приложение, я нахожу, что вызывающие методы applicationWillEnterForeground и applicationDidBecomeActive получаются.

 - (void)applicationWillEnterForeground:(UIApplication *)application
{
  NSLog(@"Application Will Enter Foreground");
}



- (void)applicationDidBecomeActive:(UIApplication *)application
{
  NSLog(@"Application Did Become Active");
}

Но я хочу знать, когда будет вызван метод applicationWillTerminate delegate, где я выполняю некоторые процедуры резервного копирования DB/файлов.

- (void)applicationWillTerminate:(UIApplication *)application{

}

Я даже попытался нажать знак минус и удалил приложение, запущенное в фоновом режиме, но все же он не вызывал никакого метода делегата.

Любые идеи???

4b9b3361

Ответ 1

Из руководства по программированию приложений iPhone:

Даже если вы разрабатываете приложение с помощью iPhone SDK 4 и более поздних версий, вы все равно должны быть готовы к тому, что ваше приложение будет прекращено. Если память будет ограничена, система может удалить приложения из памяти, чтобы сделать больше места. Если ваше приложение в настоящее время приостановлено, система удаляет ваше приложение из памяти без какого-либо уведомления. Однако, если ваше приложение в настоящее время работает в фоновом режиме, система вызывает метод applicationWillTerminate: делегата приложения. Ваше приложение не может запросить дополнительное время выполнения фона из этого метода.

Итак, applicationWillTerminate: обычно не будет вызываться очень часто в iOS 4. Если вам нужно сохранить данные, вы должны сделать это как в applicationWillTerminate:, так и в applicationDidEnterBackground:.

Ответ 3

У меня есть одно решение для завершения приложений, когда пользователь нажимает кнопку "Главная" в iOS4. Это вызовет метод applicationWillTerminate delegate вместо входа в фоновый процесс.

  • Откройте файл info.plist
  • Добавить ключ UIApplicationExitsOnSuspend
  • Установите новый ключ в YES

Ответ 4

На самом деле вы также можете использовать этот шаг для этого.

  • Откройте файл info.plist
  • Добавить ключ → Приложение не работает в фоновом режиме
  • Задайте значение этой клавиши YES