Partager via


Introduction au backgrounding dans iOS

iOS réglemente très étroitement le traitement en arrière-plan et offre trois approches pour l’implémenter :

  • Inscrire une tâche en arrière-plan : si une application doit effectuer une tâche importante, elle peut demander à iOS de ne pas interrompre la tâche lorsque l’application passe à l’arrière-plan. Par exemple, une application peut avoir besoin de terminer la journalisation d’un utilisateur ou de terminer le téléchargement d’un fichier volumineux.
  • Inscrire en tant qu’application Background-Necessary : une application peut s’inscrire en tant que type spécifique d’application qui a des exigences d’arrière-plan connues, telles que Audio , VoIP , External Accessory , Newsstand et Location . Ces applications sont autorisées à des privilèges de traitement en arrière-plan continu tant qu’elles effectuent des tâches qui se trouvent dans les paramètres du type d’application inscrit.
  • Activer les Mises à jour d’arrière-plan : les applications peuvent déclencher des mises à jour en arrière-plan avec l’analyse des régions ou en écoutant les modifications d’emplacement significatives. À partir d’iOS 7, les applications peuvent également s’inscrire pour mettre à jour le contenu en arrière-plan à l’aide de la récupération d’arrière-plan ou des notifications à distance .

États d’application et méthodes de délégué d’application

Avant de nous plonger dans le code pour le traitement en arrière-plan dans iOS, nous devons comprendre comment la mise en arrière-plan affecte le cycle de vie d’une application iOS.

Le cycle de vie de l’application iOS est une collection d’états d’application et de méthodes permettant de passer d’un à l’autre. Une application effectue des transitions entre les états en fonction du comportement de l’utilisateur et des exigences d’arrière-plan de l’application. Le mouvement est illustré par le diagramme suivant :

Diagramme des états d’application et des méthodes de délégué d’application

  • Non en cours d’exécution : l’application n’a pas encore été lancée sur l’appareil.
  • Exécution/Active : l’application est à l’écran et exécute du code au premier plan.
  • Inactif : l’application est interrompue par un appel téléphonique entrant, un SMS ou une autre interruption.
  • En arrière-plan : l’application se déplace en arrière-plan et continue d’exécuter du code en arrière-plan.
  • Suspendu : si l’application n’a pas de code à exécuter en arrière-plan, ou si tout le code est terminé, l’application est suspendue par le système d’exploitation. Le processus d’une application suspendue est maintenu actif, mais l’application ne peut pas exécuter de code dans cet état.
  • Revenir à Non en cours d’exécution/Arrêt (rare) : parfois, le processus de l’application est détruit et l’application revient à l’état Non en cours d’exécution . Cela se produit dans des situations de mémoire insuffisante ou si l’utilisateur arrête manuellement l’application.

Depuis l’introduction de la prise en charge du multitâche, iOS met rarement fin aux applications inactives et conserve à la place leurs processus suspendus en mémoire. Maintenir le processus d’une application actif garantit que l’application démarre rapidement la prochaine fois que l’utilisateur l’ouvre. Cela signifie également que les applications peuvent passer librement de l’état Suspendu à l’état En arrière-plan sans avoir recours aux ressources système. iOS 7 exploite cette fonctionnalité avec de nouvelles API qui permettent aux applications de suspendre les tâches en arrière-plan lorsque l’appareil est mis en veille, de mettre à jour le contenu directement à partir de l’arrière-plan sans intervention de l’utilisateur, etc. Nous aborderons les nouvelles API dans les techniques d’arrière-plan iOS.

Méthodes de cycle de vie des applications

Lorsqu’une application change d’état, iOS notifie l’application par le biais de méthodes d’événement dans la AppDelegate classe :

  • OnActivated - C’est ce que l’on appelle la première fois que l’application est lancée et chaque fois que l’application revient au premier plan. Il s’agit de l’endroit où placer le code qui doit s’exécuter chaque fois que l’application est ouverte.
  • OnResignActivation - Si l’utilisateur reçoit une interruption telle qu’un sms ou un appel téléphonique, cette méthode est appelée et l’application est temporairement inactive. Si l’utilisateur accepte l’appel téléphonique, l’application est envoyée en arrière-plan.
  • DidEnterBackground - Appelée lorsque l’application passe à l’état en arrière-plan, cette méthode donne à une application environ cinq secondes pour se préparer à un arrêt possible. Utilisez ce temps pour enregistrer les données et les tâches utilisateur, et supprimer les informations sensibles de l’écran.
  • WillEnterForeground - Lorsqu’un utilisateur retourne à une application en arrière-plan ou suspendue et la lance au premier plan, WillEnterForeground est appelé. C’est le moment de préparer l’application à prendre le premier plan en réhydratant tout état enregistré pendant DidEnterBackground . OnActivated sera appelé immédiatement après la fin de cette méthode.
  • WillTerminate - L’application est arrêtée et son processus est détruit. Cette méthode est appelée uniquement si le multitâche n’est pas disponible sur l’appareil ou la version du système d’exploitation, si la mémoire est faible ou si l’utilisateur met manuellement fin à une application en arrière-plan. Notez que les applications suspendues qui sont terminées n’appellent WillTerminate pas .

Le diagramme suivant illustre l’adéquation entre les états d’application et les méthodes de cycle de vie :

Ce diagramme illustre la façon dont les états d’application et les méthodes de cycle de vie s’intègrent ensemble

Contrôles utilisateur pour l’arrière-plan dans iOS

iOS 7 a introduit plusieurs fonctionnalités pour permettre aux utilisateurs de mieux contrôler l’état en arrière-plan d’une application. Le sélecteur d’application et le paramètre d’actualisation de l’application en arrière-plan affectent le cycle de vie de l’application.

Sélecteur d’applications

App Switcher est une fonctionnalité de contrôle importante introduite dans iOS 7. Il est lancé en appuyant deux fois sur le bouton Accueil et affiche les applications dont les processus sont actifs :

Déplacement entre les applications à l’aide du sélecteur d’applications

À l’aide du sélecteur d’applications, les utilisateurs peuvent faire défiler les captures instantanées de toutes les applications en arrière-plan et suspendues. Appuyez sur une application pour la lancer au premier plan. Le balayage vers le haut supprime l’application de l’arrière-plan, ce qui met fin à son processus. Nous allons examiner de plus près le sélecteur d’applications dans la démonstration du cycle de vie des applications iOS dans la section suivante.

Important

Le sélecteur d’applications n’affiche pas de différence entre les applications en arrière-plan et les applications suspendues.

Paramètres d’actualisation de l’application en arrière-plan

iOS 7 augmente le contrôle de l’utilisateur sur le cycle de vie des applications en permettant aux utilisateurs de refuser l’arrière-plan pour les applications inscrites pour le traitement en arrière-plan. Cela n’empêche pas les applications d’exécuter des tâches en arrière-plan.

Les utilisateurs peuvent modifier ce paramètre en accédant à Paramètres > Actualisation générale > de l’application en arrière-plan et en modifiant les privilèges d’arrière-plan pour une application sélectionnée. Si l’option Actualisation de l’application en arrière-plan est désactivée, l’application est suspendue immédiatement lors de l’entrée en arrière-plan et empêchée d’effectuer un traitement en arrière-plan :

Paramètres d’actualisation de l’application en arrière-plan

Les développeurs peuvent case activée l’application d’actualisation en arrière-plan status avec l’APIBackgroundRefreshStatus. Pour obtenir un exemple, reportez-vous à la recette Vérifier le paramètre d’actualisation en arrière-plan.

Nous avons abordé les principes de base du cycle de vie des applications iOS et les fonctionnalités permettant de contrôler le cycle de vie des applications. Voyons ensuite le cycle de vie de l’application iOS en action.