Vidéo: Je coule l’iPhone 11 Pro et je le balance de 5 m. Et j’en offre 3 2025
Sur un appareil iOS, divers événements peuvent interrompre votre application pour permettre à l'utilisateur de répondre et votre application passe à l'état inactif . Si l'utilisateur choisit d'ignorer une interruption, votre application revient dans l'état actif et continue à fonctionner comme auparavant. Si l'utilisateur décide d'appuyer sur l'alerte, votre application passe alors dans son état d'arrière-plan , où il est suspendu mais reste en mémoire.
iOS vous envoie un certain nombre de messages pour vous permettre de savoir exactement ce qui se passe et vous donner la possibilité de prendre des mesures telles que sauvegarder les données utilisateur et informations d'état, signifie enregistrer le point où l'utilisateur était dans l'application. Parce que l'application est en arrière-plan et toujours en mémoire, la relance est presque instantanée.
Les objets d'une application restent en mémoire, ils n'ont donc pas besoin d'être recréés lorsque l'application est relancée. Si la mémoire devient limitée, iOS peut supprimer les applications en arrière-plan pour libérer de l'espace pour l'application de premier plan.
Comme ces interruptions entraînent une perte temporaire de contrôle de votre application, les événements tactiles ne sont plus envoyés à votre application.
La séquence d'événements commence toujours de la même manière - avec le message applicationWillResignActive: envoyé au délégué de votre application lorsque l'application est sur le point de passer de l'état actif à l'état inactif. Dans cette méthode, vous devez mettre en pause les tâches en cours, désactiver les minuteurs, limiter les taux d'images OpenGL ES et, en général, mettre les choses en attente.
Ce qui se passe après dépend de a) la nature de l'interruption, et b) comment l'utilisateur réagit à l'interruption. Votre application peut être déplacée en arrière-plan ou réactivée.
Si l'utilisateur répond à l'interruption ou a lancé une autre application, votre application est déplacée en arrière-plan.
Les deux prochaines puces expliquent les messages auxquels votre application peut répondre après son déplacement en arrière-plan:
-
Le message applicationDidEnterBackground: : Lorsque votre application passe en arrière-plan, c'est a envoyé le message applicationDidEnterBackground: Dans cette méthode, vous devez enregistrer toutes les données non enregistrées ou état (la vue actuelle, les options sélectionnées, etc.) dans un fichier de cache temporaire ou dans la base de données de préférences sur le disque.
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 nécessaire pour pouvoir restaurer votre application au cas où elle serait par la suite purgée de la mémoire.
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. C'est pourquoi vous devez enregistrer les données lorsque vous recevez le message applicationDidEnterBackground:.
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 applicationDidEnterBackground: ne retourne pas avant l'expiration du délai (ou si votre application ne demande pas plus de temps d'exécution à partir d'iOS), votre application est terminé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:.
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. Ici, vous annulez ce que vous avez fait dans la méthode applicationWillResignActive, par exemple redémarrer 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 de suspension, le système suit et fusionne les événements susceptibles d'avoir un impact sur cette application lorsqu'elle est relâchée. Dès que votre application est à nouveau opérationnelle, le système leur fournit 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.
Les applications sont généralement déplacées en arrière-plan lorsqu'elles sont interrompues. Mais si l'application a été compilée avec une version très ancienne du SDK, ou si elle fonctionne sur une ancienne version 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, vous devez toujours vous préparer à ce que votre application soit supprimée sans aucune notification.L'utilisateur peut tuer les applications explicitement en utilisant la barre multitâche. En outre, si la mémoire devient limitée, le système peut supprimer des applications de la mémoire pour libérer de l'espace. Si elle supprime votre application suspendue , elle ne vous avertit pas !
Lorsque votre délégué d'application reçoit le message applicationWillTerminate: dans les applications non multitâches ou en arrière-plan, vous devez effectuer les mêmes opérations 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é 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.
