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 метод делегата назовут, где я делаю некоторые стандартные программы DB/резервного копирования файлов.

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

}

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

Какие-либо идеи???

36
задан Biranchi 30 May 2011 в 04:26
поделиться

3 ответа

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

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

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

52
ответ дан 27 November 2019 в 05:57
поделиться

Сессия WWDC 2010 Внедрение многозадачности в ОС iPhone ( Часть 2 ) очень хорошо объясняет переходы между состояниями приложения.

4
ответ дан 27 November 2019 в 05:57
поделиться

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

  1. Откройте ваш файл info.plist
  2. Добавьте ключ UIApplicationExitsOnSuspend
  3. Установите новый ключ в YES
2
ответ дан 27 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: