Y avait-il un commutateur d'applications ou deviez-vous arrêter une application et en démarrer une nouvelle ?
Réponses
Trop de publicités?Pour information, Apple a toujours autorisé certaines de ses propres applications ou services à persister en arrière-plan, par exemple le téléphone, Mail, les notifications push, Find My iPhone, etc., en fonction des besoins et des fonctionnalités.
Une chose à prendre en compte est que le multitâche aujourd'hui sur iOS est encore limité, surtout si on le compare aux systèmes d'exploitation de bureau (et peut-être à certains environnements Android).
À partir d'iOS 4, Apple vous donne l'illusion que toutes vos applications sont en cours d'exécution en ayant créé l'app switcher. Si certaines apps sont toujours en cours d'exécution, la plupart sont en hibernation, en fonction des tâches d'arrière-plan qu'elles ont enregistrées pour s'exécuter et de la RAM disponible.
Le cycle de vie des applications s'est généralement déroulé de cette manière depuis le premier jour :
- L'utilisateur touche l'icône de l'application
- L'écran de lancement s'affiche
- Le premier écran (vue) est chargé
- L'utilisateur fait des choses avec l'application
- L'utilisateur appuie sur le bouton d'accueil (ou, avec les versions ultérieures, sur l'écran d'une autre application).
- Une application précédemment ouverte reçoit un signal indiquant qu'elle n'est plus au premier plan.
- L'application reçoit un signal indiquant qu'elle est sur le point d'être suspendue.
- L'application est suspendue (état sauvegardé en RAM)
- L'état de l'application est déplacé de la RAM vers le disque (flash) lorsque la RAM est pleine.
- L'utilisateur revient à l'application
- Si l'état est suffisamment récent, il est rechargé depuis la RAM ou le disque.
- Si l'état est périmé, l'application recommence à zéro.
Les nuances dans la façon dont les états sont traités ont évolué au fil des ans, et les développeurs ont obtenu un contrôle de plus en plus important sur ce qu'ils peuvent faire entre les états.
Lorsque les gens passent en revue et "ferment de force" toutes leurs applications, ils se débarrassent essentiellement de tout état sauvegardé par l'application et tuent toutes les tâches d'arrière-plan que l'application a pu lancer. Beaucoup pensent qu'ils aident à réduire la consommation de la batterie et à garder la RAM propre, mais Craig Federighi a fait remarquer qu'en agissant ainsi, ils peuvent en fait provoquer une plus grande consommation de la batterie, puisque le processeur fait plus d'efforts pour rouvrir ces applications à chaque fois au lieu de simplement les sortir de la stase.
Depuis iOS 4 également, les développeurs sont autorisés à créer des tâches qui peuvent persister même si une application a été suspendue, comme la lecture audio, la surveillance du trafic réseau (VoIP), le rafraîchissement des données en arrière-plan et les mises à jour de la localisation. Cela est efficace car seule une partie de l'application est en cours d'exécution et utilise des ressources.
Au fur et à mesure que les appareils deviennent plus puissants (plus de processeur, plus de mémoire vive, plus de stockage, plus de batterie) et que le code devient plus efficace, ces tâches supplémentaires s'avèrent moins gourmandes en ressources. Les nouveautés comme les widgets et les extensions Siri, iMessage et CallKit à venir peuvent donner l'impression que les applications populaires font toujours quelque chose en arrière-plan.
Au départ, iOS ne disposait pas du multitâche. Leur première tentative remonte à 2010 (nom d'un chien !). L'iPhone n'avait tout simplement pas assez de mémoire vive et n'était pas optimisé pour cela. En 2010, Apple a permis aux applications principales d'être multitâches, mais pas aux applications tierces. Je me souviens avoir jailbreaké mon appareil pour contourner cela et permettre à toutes les applications d'être multitâches, mais c'était bogué. iOS a parcouru un long chemin, avec un traitement 64 bits et une meilleure gestion de la mémoire.
Pour en savoir plus, consultez le Wikipedia article.
Tout d'abord --- iOS étant un système Unix, très similaire au Mac OS, a TOUJOURS été "multitâche" au sens le plus profond du terme. De nombreux processus sont exécutés simultanément sur l'appareil iOS en permanence.
Ce qui a été limité, c'est l'INTERACTION DE L'UTILISATEUR avec les programmes. L'utilisateur ne pouvait pas interagir avec plus d'un programme à un moment donné.
De plus, même à l'époque où il fallait appuyer sur "home" pour passer d'une application à une autre, l'ancienne application n'était PAS supprimée. Elle a été déplacée "en arrière-plan", ce qui signifie qu'elle n'a pas accès à l'écran, au clavier, à la caméra, etc. et qu'elle ne peut conserver que très peu de ressources système en arrière-plan.
Pour quitter complètement une application iOS, vous deviez appuyer deux fois sur le bouton d'accueil et, lorsque toutes les applications en cours d'exécution commençaient à trembler, vous pouviez appuyer sur le petit "x" pour les tuer une par une. Ce n'est qu'à ce moment-là que les applications étaient vraiment tuées.
La raison de cette décision était que ce n'est que de cette manière qu'Apple pouvait obtenir une bonne réactivité de l'interface utilisateur et une bonne durée de vie de la batterie, avec les ressources système très très limitées des anciens appareils iOS.
La situation n'a pas vraiment changé depuis - seulement dans des scénarios spécifiques, les applications d'arrière-plan reçoivent un peu plus de ressources pour continuer à fonctionner (mise en réseau en arrière-plan, lecture audio en arrière-plan, image dans l'image, etc.)
Le système est multitâche comme toujours, mais l'interface utilisateur permet des scénarios plus compliqués où plus d'une application est partiellement visible par l'utilisateur en même temps.