Вопрос

Метод делегата ApplicationWillterminate не вызывается в iOS 4.0, когда я ударю кнопку домой, я вижу приложениеWILLESignactive и ApplicationDidenterBackground Methods.

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

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

И когда я дважды нажмите на домашнюю кнопку, и снова запустите приложение, которое я нахожу ApplicationWillenterForegrounge, и 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) объясняет прерывание состояния приложения чрезвычайно хорошо.

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

  1. Откройте файл info.plist
  2. Добавьте ключ UiApplicationExitsonsUsPend
  3. Установите новый ключ до да

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

  1. Откройте файл info.plist
  2. Добавить ключ -> Приложение не работает в фоновом режиме
  3. Установите это значение ключа для да
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top