Vidéo: iOS 7 : Astuces et fonctions cachées sur iPhone, iPod touch et iPad 2025
Si l'utilisateur répond à l'interruption message par exemple) ou a lancé une autre application, votre application est déplacée en arrière-plan.
Lorsque l'utilisateur accepte la notification ou l'interruption ou appuie sur le bouton Accueil (ou lorsque le système lance une autre application), votre application passe dans l'état d'arrière-plan, où elle est suspendue. (Si une application doit continuer à s'exécuter, elle peut demander l'exécution du système.)
Voici les messages auxquels votre application peut répondre après son déplacement en arrière-plan:
-
Le message applicationDidEnterBackground: : Lorsque votre application entre en arrière-plan état, il est envoyé le message applicationDidEnterBackground: Dans cette méthode, vous devez enregistrer toutes les données non enregistrées ou état (où l'utilisateur se trouve dans l'application - la vue actuelle, les options sélectionnées, etc.) dans un fichier cache temporaire ou dans la base de données des préférences. sur le disque. "
Sachez qu'Apple appelle le système de stockage iOS un disque même s'il s'agit d'un lecteur à état solide, donc si Apple l'appelle, vous devriez le faire aussi, juste pour vous Ne confondez pas trop de gens.
Même si votre application entre dans l'état d'arrière-plan, vous n'avez aucune garantie qu'elle y restera indéfiniment. Si la mémoire devient limitée, iOS purgera les applications en arrière-plan afin de libérer de l'espace pour l'application de premier plan.
Vous devez faire tout ce qui est en votre pouvoir pour restaurer votre application au cas où celle-ci serait ensuite effacée de la mémoire afin que votre application puisse utiliser votre application pour restaurer votre application. à son état antérieur. Vous devez également effectuer des opérations de nettoyage supplémentaires, telles que la suppression de fichiers temporaires.
Si votre application est purgée lorsqu'elle est dans cet état suspendu, elle ne reçoit aucune notification indiquant qu'elle a été supprimée de la mémoire. Vous devez enregistrer toutes les données à l'avance!
Lorsque votre délégué reçoit la méthode applicationDidEnterBackground:, votre application dispose d'un délai non documenté pour terminer les tâches. Si la méthode ne revient pas avant l'expiration du délai imparti (ou si votre application ne demande pas plus de temps d'exécution à iOS), votre application est arrêtée et purgée de la mémoire.
Si votre application demande plus de temps d'exécution ou a déclaré qu'elle exécute l'exécution en arrière-plan, elle peut continuer à s'exécuter après l'exécution de la méthode applicationDidEnterBackground:. Sinon, votre application d'arrière-plan (maintenant) est déplacée vers l'état suspendu peu après son retour de la méthode applicationDidEnterBackground:.
Si l'application est en arrière-plan, elle peut être relancée. Cela peut se produire si l'utilisateur sélectionne l'application depuis l'écran d'accueil ou la barre multitâche ou s'il est lancé par le système si l'application traite les événements en arrière-plan ou surveille un changement d'emplacement significatif, par exemple.
-
Le message applicationWillEnterForeground: : Lorsque votre application est relancée en arrière-plan, le message applicationWillEnterForeground: est envoyé. Dans cette méthode, vous devez annuler ce que vous avez fait dans la méthode applicationDidEnterBackground: (pas applicationWillResignActive, vous annulez cela ensuite).
Si l'utilisateur ignore le message SMS ou que l'application est relancée en arrière-plan, votre application est réactivée et commence à recevoir des événements tactiles et autres.
Lorsque votre application est réactivée, le message applicationDidBecomeActive: est envoyé.
Vous pouvez utiliser la méthode applicationDidBecomeActive: pour restaurer l'application dans l'état dans lequel elle se trouvait avant l'interruption. Vous annulez ici ce que vous avez fait dans la méthode applicationWillResignActive, par exemple relancer toutes les tâches qui ont été suspendues (ou pas encore démarrées) alors que l'application était inactive. Si l'application était précédemment en arrière-plan, vous devrez peut-être actualiser l'interface utilisateur.
Lorsqu'une application est en état suspendu, le système suit et fusionne (en réalité nets hors ) les événements qui pourraient avoir un impact sur cette application lors de sa relance. Dès que votre application est à nouveau opérationnelle, le système leur envoie ces événements.
Pour la plupart de ces événements, l'infrastructure existante de votre application doit simplement répondre de manière appropriée. Par exemple, si l'orientation du périphérique est modifiée, les contrôleurs de vue de votre application mettront automatiquement à jour l'orientation de l'interface de manière appropriée.
Les applications sont généralement déplacées en arrière-plan lorsqu'elles sont interrompues ou lorsque l'utilisateur se ferme. Mais si l'application a été compilée avec une version antérieure du SDK, ou fonctionne sur une version antérieure du système d'exploitation qui ne prend pas en charge le multitâche - ou si vous décidez que vous ne voulez pas que votre application s'exécute en arrière-plan et vous définissez la clé UIApplicationExitsOnSuspend dans ses informations. fichier plist - iOS met fin à votre application.
Même si votre application prend en charge le multitâche (presque tous à ce stade), vous devez toujours vous préparer à ce que votre application soit supprimée sans aucune notification. L'utilisateur peut tuer des applications explicitement en utilisant la barre multitâche.
De plus, si la mémoire est limitée, le système peut supprimer des applications de la mémoire pour gagner de la place. Si elle supprime votre application suspendue , elle ne vous avertit pas, et encore moins d'avis! Toutefois, si votre application est en cours d'exécution dans l'état d'arrière-plan, le système appelle la méthode applicationWillTerminate: du délégué de l'application.
Lorsque votre délégué d'application reçoit le message applicationWillTerminate: dans des applications non multitâches ou en arrière-plan, vous devez faire le même genre de choses que dans applicationDidEnterBackground: sauf que cette fois vous le faites en sachant que votre application a gagné ne reviens pas de l'arrière-plan.
Votre application applicationWillTerminate: implémentation de la méthode a un temps limité (bien que non documenté) pour faire ce qu'elle doit faire et retourner. Plus longtemps que cela et votre application est terminée et purgée de la mémoire. (Le Terminator ne tourne pas autour.)
