36 votes

ApplicationWillTerminate dans iOS 4.0

La méthode du délégué applicationWillTerminate n'est pas appelée dans iOS 4.0 Lorsque j'appuie sur le bouton Home, les méthodes de délégués applicationWillResignActive et applicationDidEnterBackground sont appelées.

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

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

Et lorsque je tape deux fois sur le bouton Accueil et que je lance à nouveau l'application, je constate que les méthodes déléguées applicationWillEnterForeground et applicationDidBecomeActive sont appelées.

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

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

Mais je veux savoir quand la méthode du délégué applicationWillTerminate sera appelée, où je fais quelques routines de sauvegarde de bases de données/fichiers.

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

}

J'ai même essayé d'appuyer sur le signe moins et de supprimer l'application fonctionnant en arrière-plan, mais elle n'a toujours pas appelé de méthode déléguée.

Des idées ?

52voto

Ole Begemann Points 85798

Extrait du Guide de programmation des applications iPhone :

Même si vous développez votre application à l'aide de l'iPhone SDK 4 et des versions ultérieures, vous devez vous préparer à ce que votre application soit interrompue. Si la mémoire devient limitée, le système peut supprimer des applications de la mémoire afin de faire plus de place. Si votre application est actuellement suspendue, le système la supprime de la mémoire sans préavis. Toutefois, si votre application est en cours d'exécution en arrière-plan, le système appelle la commande applicationWillTerminate: du délégué de l'application. Votre application ne peut pas demander à cette méthode un temps d'exécution supplémentaire en arrière-plan.

Alors oui, applicationWillTerminate: ne sera généralement pas appelé très souvent dans iOS 4. Si vous devez sauvegarder des données, vous devez le faire dans les deux cas. applicationWillTerminate: y applicationDidEnterBackground: .

4voto

falconcreek Points 3657

La session WWDC 2010 Adoption du multitâche sur l'iPhone OS ( Partie 2 ) explique très bien les transitions d'état de l'application.

2voto

Biranchi Points 4417

J'ai une solution pour arrêter les applications lorsque l'utilisateur appuie sur le bouton Home dans iOS4. Cette solution appelle la méthode du délégué applicationWillTerminate au lieu d'entrer dans le processus d'arrière-plan.

  1. Ouvrez votre fichier info.plist
  2. Ajouter la clé UIApplicationExitsOnSuspend
  3. Réglez la nouvelle clé sur OUI

1voto

Zaldy Points 202

En fait, vous pouvez également utiliser cette étape pour le faire.

  1. Ouvrez votre fichier info.plist
  2. Add The Key -> L'application ne fonctionne pas en arrière-plan
  3. Définissez la valeur de cette clé sur OUI

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X