Fermer l'annonce

Il y a encore beaucoup de gens qui ne savent pas comment fonctionne le multitâche sur iOS. Mais pour commencer, il faut souligner qu’il ne s’agit pas d’un véritable multitâche, mais d’une solution très intelligente qui n’alourdit ni le système ni l’utilisateur.

On peut souvent entendre des superstitions selon lesquelles les applications exécutées en arrière-plan sur iOS remplissent la mémoire de fonctionnement, ce qui entraîne un ralentissement du système et de la durée de vie de la batterie, de sorte que l'utilisateur doit les désactiver manuellement. La barre multitâche ne contient pas réellement une liste de tous les processus en arrière-plan en cours d'exécution, mais uniquement les applications lancées les plus récemment. Ainsi, l'utilisateur n'a pas à se soucier des processus exécutés en arrière-plan, sauf dans quelques cas. Lorsque vous appuyez sur le bouton Home, l'application se met généralement en veille ou se ferme, de sorte qu'elle ne charge plus le processeur ni la batterie et, si nécessaire, libère la mémoire nécessaire.

Il ne s’agit donc pas d’un multitâche à part entière lorsque des dizaines de processus sont en cours d’exécution : une seule application est toujours exécutée au premier plan, qui est mise en pause ou complètement désactivée si nécessaire. Seuls quelques processus secondaires s'exécutent en arrière-plan. C'est pourquoi vous rencontrerez rarement un crash d'application sur iOS, par exemple Android est submergé d'applications en cours d'exécution dont l'utilisateur doit s'occuper. D'une part, cela rend le travail avec l'appareil désagréable et, d'autre part, cela provoque, par exemple, un démarrage lent et des transitions entre les applications.

Type d'exécution de l'application

L'application sur votre appareil iOS est dans l'un de ces 5 états :

  • En cours d'exécution: l'application est démarrée et s'exécute au premier plan
  • Arrière-plan: il est toujours en cours d'exécution mais en arrière-plan (on peut utiliser d'autres applications)
  • Suspendu: J'utilise toujours la RAM mais ne fonctionne pas
  • Inactif: l'application est en cours d'exécution mais des commandes indirectes (par exemple, lorsque vous verrouillez l'appareil avec l'application en cours d'exécution)
  • Ne pas courrir: L'application est terminée ou n'a pas démarré

La confusion survient lorsque l'application passe en arrière-plan pour ne pas déranger. Lorsque vous appuyez sur le bouton Accueil ou utilisez le geste pour fermer l'application (iPad), l'application passe en arrière-plan. La plupart des applications sont suspendues en quelques secondes (elles sont stockées dans la RAM de l'iDevice afin de pouvoir être lancées rapidement, elles chargent moins le processeur et économisent ainsi la batterie). Vous pourriez penser que si une application continue d'utiliser de la mémoire, vous avez de le supprimer manuellement pour le libérer. Mais vous n’êtes pas obligé de le faire, car iOS le fera pour vous. Si vous avez une application exigeante suspendue en arrière-plan, comme un jeu qui utilise une grande quantité de RAM, iOS la supprimera automatiquement de la mémoire si nécessaire et vous pourrez la redémarrer en appuyant sur l'icône de l'application.

Aucun de ces états n'est reflété dans la barre multitâche, le panneau affiche uniquement une liste des applications récemment lancées, que l'application soit arrêtée, en pause ou exécutée en arrière-plan. Vous remarquerez peut-être également que l'application en cours d'exécution n'apparaît pas dans le panneau Multitâche.

Tâches d'arrière-plan

Normalement, lorsque vous appuyez sur le bouton Accueil, l'application s'exécute en arrière-plan et si vous ne l'utilisez pas, elle se met automatiquement en pause dans les cinq secondes. Ainsi, si vous téléchargez un podcast, par exemple, le système l'évalue comme une application en cours d'exécution et retarde la fin de dix minutes. Au plus tard au bout de dix minutes, le processus est libéré de la mémoire. En bref, vous n'avez pas à craindre d'interrompre votre téléchargement en appuyant sur le bouton Accueil, si cela ne prend pas plus de 10 minutes pour le terminer.

Fonctionnement indéfini en arrière-plan

En cas d'inactivité, le système termine l'application dans un délai de cinq secondes et en cas de téléchargement, la terminaison est retardée de dix minutes. Cependant, un petit nombre d'applications nécessitent une exécution en arrière-plan. Voici quelques exemples d’applications pouvant s’exécuter indéfiniment en arrière-plan dans iOS 5 :

  • Les applications qui diffusent du son et doivent être interrompues pendant un certain temps (pause de la musique lors d'un appel téléphonique, etc.),
  • Applications qui suivent votre localisation (logiciel de navigation),
  • Applications recevant des appels VoIP, par exemple si vous utilisez Skype, vous pouvez recevoir un appel même lorsque l'application est en arrière-plan,
  • Téléchargements automatiques (par exemple Kiosque).

Toutes les applications doivent être fermées si elles n'exécutent plus une tâche (telle que des téléchargements en arrière-plan). Cependant, il existe des exceptions qui s'exécutent en permanence en arrière-plan, comme l'application Mail native. S'ils fonctionnent en arrière-plan, ils consomment de la mémoire, utilisent le processeur ou réduisent la durée de vie de la batterie.

Les applications autorisées à s'exécuter indéfiniment en arrière-plan peuvent faire tout ce qu'elles font pendant leur exécution, de la lecture de musique au téléchargement de nouveaux épisodes de podcast.

Comme je l'ai mentionné précédemment, l'utilisateur n'a jamais besoin de fermer les applications exécutées en arrière-plan. La seule exception à cette règle concerne le cas où une application exécutée en arrière-plan se bloque ou ne sort pas correctement du mode veille. L'utilisateur peut alors fermer les applications manuellement dans la barre multitâche, mais cela arrive rarement.

Donc, en général, vous n'avez pas besoin de gérer les processus en arrière-plan car le système s'en chargera lui-même. C'est pourquoi iOS est un système si récent et si rapide.

Du point de vue d'un développeur

L'application peut réagir avec un total de six états différents dans le cadre du multitâche :

1. applicationWillResignActive

En traduction, cet état signifie que l'application cessera d'être l'application active (c'est-à-dire l'application au premier plan) dans le futur (quelques millisecondes). Cela se produit, par exemple, lors de la réception d'un appel lors de l'utilisation de l'application, mais en même temps, cette méthode provoque également cet état avant que l'application ne passe en arrière-plan, vous devez donc prendre en compte ces changements. Cette méthode convient également pour que, par exemple, elle suspende toutes les activités qu'elle effectue lorsqu'il y a un appel entrant et attende la fin de l'appel.

2. applicationDidEnterBackground

Le statut indique que l'application est passée en arrière-plan. Les développeurs doivent utiliser cette méthode pour suspendre tous les processus qui n'ont pas nécessairement besoin de s'exécuter en arrière-plan et effacer la mémoire des données inutilisées et d'autres processus, tels que l'expiration des minuteries, l'effacement des images chargées de la mémoire qui ne seront pas nécessairement nécessaires ou la fermeture. connexions avec les serveurs, sauf s'il est essentiel que l'application établisse des connexions en arrière-plan. Lorsque la méthode est invoquée dans une application, elle doit essentiellement être utilisée pour suspendre complètement l'application si une partie de celle-ci n'est pas requise pour s'exécuter en arrière-plan.

3. applicationWillEnterForeground

Cet état est à l’opposé du premier état, dans lequel l’application passera à l’état actif. L'état signifie simplement que l'application en veille reprendra de l'arrière-plan et apparaîtra au premier plan dans les prochaines millisecondes. les développeurs doivent utiliser cette méthode pour reprendre tous les processus inactifs lorsque l'application était en arrière-plan. Les connexions aux serveurs doivent être rétablies, les minuteries réinitialisées, les images et les données chargées en mémoire et les autres processus nécessaires peuvent reprendre juste avant que l'utilisateur ne voie à nouveau l'application chargée.

4. applicationDidBecomeActive

L'état indique que l'application vient de devenir active après avoir été remise au premier plan. Il s'agit d'une méthode qui peut être utilisée pour apporter des ajustements supplémentaires à l'interface utilisateur ou pour restaurer l'interface utilisateur à son état d'origine, etc. Cela se produit en réalité au moment où l'utilisateur voit déjà l'application sur l'écran, il est donc nécessaire de Déterminez avec prudence ce qui se passe dans cette méthode et dans la méthode précédente. Ils sont appelés les uns après les autres avec un écart de quelques millisecondes.

5. applicationWillTerminate

Cet état se produit quelques millisecondes avant la fermeture de l'application, c'est-à-dire avant que l'application ne se termine réellement. Soit manuellement depuis le multitâche, soit lors de la mise hors tension de l'appareil. La méthode doit être utilisée pour sauvegarder les données traitées, mettre fin à toutes les activités et supprimer les données qui ne seront plus nécessaires.

6. applicationDidReceiveMemoryWarning

C’est ce dernier état qui est le plus discuté. Il se charge, le cas échéant, de supprimer l'application de la mémoire iOS si elle utilise inutilement les ressources système. Je ne sais pas spécifiquement ce que fait iOS avec les applications en arrière-plan, mais s'il a besoin d'une application pour libérer des ressources vers d'autres processus, il l'invite avec un avertissement de mémoire à libérer toutes les ressources dont il dispose. Cette méthode est donc appelée dans l'application. Les développeurs doivent l'implémenter de manière à ce que l'application abandonne la mémoire qu'elle a allouée, enregistre tout ce qui est en cours, efface les données inutiles de la mémoire et libère la mémoire de manière adéquate. Il est vrai que de nombreux développeurs, même débutants, ne pensent pas ou ne comprennent pas ces choses, et il peut alors arriver que leur application menace la durée de vie de la batterie et/ou consomme inutilement des ressources système, même en arrière-plan.

Verdikt

Ces six états et leurs méthodes associées constituent l’arrière-plan de tout « multitâche » dans iOS. c'est un excellent système, tant que les développeurs n'ignorent pas le fait qu'il est nécessaire d'être responsables de ce que l'application génère sur les appareils de leurs utilisateurs, s'ils sont minimisés ou reçoivent des avertissements du système, etc.

Source: macworld.com

Auteurs: Jakub Požárek, Martin Doubek (ArnieX)

 
Avez-vous également un problème à résoudre ? Besoin de conseils ou peut-être de trouver la bonne application ? N'hésitez pas à nous contacter via le formulaire dans la rubrique Conseils, la prochaine fois nous répondrons à votre question.

.