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{
}
Я даже попытался поразить знак "минус" и удалил Приложение, работающее в фоновом режиме, но тем не менее это не назвало метода делегата.
Какие-либо идеи???
Из Руководства по программированию приложений iPhone:
Даже если вы разрабатываете свое приложение с использованием iPhone SDK 4 и более поздних версий, вы все равно должны быть готовы к завершению работы вашего приложения. Если объем памяти становится ограниченным, система может удалить приложения из памяти, чтобы освободить место. Если ваше приложение в настоящее время приостановлено, система удаляет ваше приложение из памяти без какого-либо уведомления. Однако, если ваше приложение в настоящее время работает в фоновом режиме, система вызывает метод
applicationWillTerminate:
делегата приложения. Ваше приложение не может запрашивать дополнительное время фонового выполнения у этого метода.
Итак, да, applicationWillTerminate:
обычно не будет вызываться очень часто в iOS 4. Если вам нужно сохранить данные, вы должны сделать это в обоих applicationWillTerminate:
и applicationDidEnterBackground:
.
Сессия WWDC 2010 Внедрение многозадачности в ОС iPhone ( Часть 2 ) очень хорошо объясняет переходы между состояниями приложения.
У меня есть одно решение для завершения приложений, когда пользователь нажимает кнопку Home в iOS4. Это позволит вызывать метод делегата applicationWillTerminate вместо того, чтобы входить в фоновый процесс.