Cycle de vie dans le développement mobile : définition, étapes et fonctionnement

Auteur : IT Sectr Publié le : 2026-03-02 Temps de lecture : 9 min

Le cycle de vie d'une application mobile détermine son comportement au lancement, à la minimisation, au retour de l'arrière-plan et à la fermeture. Dans cet article, nous aborderons App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle et LifecycleOwner. Comprendre ces processus est essentiel pour prévenir les fuites de mémoire, la perte de données et un fonctionnement incorrect de l'application. Plus de détails dans la documentation officielle Android Activity Lifecycle.

Points clés

  • Activity Lifecycle (Android) inclut 7 méthodes : onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) est appelé dans l'ordre : viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle a 5 états : Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle est lié à Activity mais a ses propres méthodes : onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) permet de s'abonner aux événements du cycle de vie via LifecycleObserver

Cycle de vie de l'application (App Lifecycle)

Avant d'aborder le cycle de vie des écrans individuels, il est important de comprendre le cycle de vie de l'ensemble de l'application. Dans iOS, l'application passe par cinq états : Not Running (non exécutée), Inactive (en arrière-plan, ne reçoit pas d'événements), Active (active), Background (en arrière-plan, code en cours d'exécution) et Suspended (en arrière-plan, code suspendu). Ces états sont gérés dans AppDelegate via les méthodes applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground et applicationWillTerminate.

Dans Android, l'équivalent est le Application Lifecycle, suivi via l'interface Application.ActivityLifecycleCallbacks. Cependant, Android se concentre davantage sur le cycle de vie d'une Activity — un écran individuel de l'application. En effet, une application Android peut être composée de plusieurs Activities, chacune avec son propre cycle.

L'approche moderne dans Android est d'utiliser ProcessLifecycleOwner de la bibliothèque lifecycle-process. Il permet de suivre l'état de l'ensemble du processus sans être lié à une Activity spécifique. Dans iOS, UISceneDelegate (depuis iOS 13) ou AppDelegate est utilisé pour suivre l'état de l'application. SceneDelegate gère plusieurs fenêtres (multifenêtres) sur iPad. Comprendre le App Lifecycle est particulièrement important pour IT Sectr lors du développement d'applications avec synchronisation en arrière-plan, streaming et appels VoIP.

Activity Lifecycle dans Android

Activity est le composant de base d'une application Android, représentant un écran. L'Activity a un cycle de vie clairement défini géré par le système d'exploitation en réponse aux actions de l'utilisateur et aux événements système (rotation de l'écran, appel entrant, faible mémoire).

Méthode Description Que faire
onCreateAppelé une fois lors de la création de l'ActivityInitialisation de l'UI, findViewById, configuration ViewModel
onStartL'Activity devient visibleLancer les animations, enregistrer BroadCastReceiver
onResumeL'Activity obtient le focus d'entréeLancer la caméra, les capteurs, les animations
onPauseL'Activity perd le focus (partiellement visible)Sauvegarder les brouillons, arrêter les animations
onStopL'Activity n'est pas visibleLibérer les ressources, arrêter les mises à jour
onDestroyL'Activity est détruiteNettoyer toutes les références, se désabonner de LiveData
onRestartAppelé avant onStart après onStopRéinitialisation

Important : onSaveInstanceState est appelé avant onStop pour sauvegarder l'état temporaire. La restauration se fait dans onCreate via Bundle savedInstanceState ou via SavedStateHandle dans ViewModel. Sans un traitement approprié du cycle de vie, l'application perdra toutes les données non sauvegardées lors de la rotation de l'écran.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Activity Lifecycle dans Jetpack Compose

Dans Jetpack Compose, le cycle de vie de l'Activity reste inchangé, mais Compose fournit des outils supplémentaires : Composition consciente du cycle de vie via LifecycleOwner, les effets LifecycleEventEffect et DisposableEffect pour le nettoyage automatique des ressources à la destruction.

Fragment Lifecycle en détail

Fragment dans Android vit à l'intérieur d'une Activity et a son propre cycle de vie, qui chevauche partiellement celui de l'Activity mais ajoute de nouvelles méthodes. Les Fragments peuvent être ajoutés, remplacés, supprimés sans détruire l'Activity, ce qui les rend plus flexibles mais aussi plus complexes.

Méthodes clés du Fragment Lifecycle : onAttach — Fragment attaché à l'Activity (premier appel) ; onCreate — initialisation des données ; onCreateView — création de la View ; onViewCreated — View créée, l'UI peut être configurée ; onStart — Fragment visible ; onResume — Fragment en focus ; onPause — Fragment perd le focus ; onStop — Fragment non visible ; onDestroyView — View détruite ; onDestroy — Fragment détruit ; onDetach — Fragment détaché de l'Activity.

Différence clé avec l'Activity : onCreateView et onDestroyView peuvent être appelés plusieurs fois (par exemple, lors du changement de TabLayout), tandis que onCreate est appelé une fois. Par conséquent, l'initialisation de la View doit être faite dans onViewCreated, pas dans onCreateView. Les ressources liées à la View (comme les adaptateurs RecyclerView) doivent être nettoyées dans onDestroyView.

ViewController Lifecycle dans iOS

UIViewController est la classe de base pour la gestion des écrans dans iOS. Son cycle de vie consiste en une séquence de méthodes que UIKit appelle automatiquement. Comprendre ce cycle est essentiel pour une initialisation correcte de l'UI, la gestion des données et de la mémoire.

Méthode Quand est-elle appelée Utilisation typique
loadViewQuand le View Controller charge sa hiérarchie de ViewInitialisation personnalisée sans storyboard
viewDidLoadAprès le chargement de la View en mémoire (une fois)Configuration de l'UI, chargement des données initiales
viewWillAppearAvant l'apparition de la View à l'écranMettre à jour les données, s'abonner aux notifications
viewDidAppearAprès l'apparition de la View à l'écranLancer les animations, lancer les animations de suivi
viewWillDisappearAvant la disparition de la View de l'écranSauvegarder l'état, se désabonner des notifications
viewDidDisappearAprès la disparition de la View de l'écranArrêter les animations, libérer les ressources
deallocQuand le View Controller est détruitLibérer toutes les ressources

Important : viewDidLoad n'est appelé qu'une fois dans la vie du View Controller. Pour mettre à jour les données à chaque apparition, utilisez viewWillAppear. Si vous vous abonnez à NotificationCenter dans viewWillAppear, assurez-vous de vous désabonner dans viewDidDisappear pour éviter les fuites de mémoire.

SwiftUI Lifecycle

SwiftUI gère le cycle de vie des Views via des structures View. Au lieu de méthodes de callback, SwiftUI utilise les modificateurs onAppear et onDisappear. Pour les états globaux de l'application, le App Lifecycle est utilisé via les protocoles App et Scene. SwiftUI gère automatiquement la création et la destruction des Views en fonction de l'état, ce qui simplifie le développement mais nécessite de comprendre l'identité et la durée de vie des Views.

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

LifecycleOwner et LifecycleObserver dans Android

LifecycleOwner est une interface d'Android Architecture Components qui marque un objet ayant un cycle de vie (Activity, Fragment). LifecycleObserver est une interface qui permet à un objet de s'abonner aux événements du LifecycleOwner. Ensemble, ils forment la base de la gestion réactive du cycle de vie dans le développement Android moderne.

Au lieu d'appeler explicitement des méthodes dans onStart/onStop, il est recommandé d'utiliser DefaultLifecycleObserver (remplacement de l'ancien LifecycleObserver avec annotations @OnLifecycleEvent). C'est l'approche promue par Google pour ViewModel et d'autres composants qui doivent réagir au cycle de vie sans avoir de références directes à Activity ou Fragment.

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

Chez IT Sectr, nous utilisons LifecycleOwner dans tous les projets Android. ViewModel s'abonne au LifecycleOwner de l'Activity via viewModelScope et lifecycleScope, garantissant l'annulation automatique des coroutines lors de la destruction de l'Activity. Cela évite les fuites de mémoire et rend le code plus propre et plus sûr.

Questions fréquentes

Quels états une Activity traverse-t-elle dans Android ?

L'Activity passe par six états : Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

Dans quel ordre les méthodes du ViewController Lifecycle sont-elles appelées dans iOS ?

Ordre : loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad est appelé une fois.

Qu'est-ce que LifecycleOwner dans Android ?

LifecycleOwner est un composant d'Android Architecture Components qui possède le cycle de vie d'une Activity ou d'un Fragment. Permet de s'abonner aux événements via LifecycleObserver.

Quels sont les états du App Lifecycle dans iOS ?

L'application iOS passe par cinq états : Not Running, Inactive, Active, Background, Suspended. Les transitions sont gérées via UIApplicationDelegate.

Qu'est-ce que Saved State dans Android ?

Saved State est le mécanisme d'Android pour préserver l'état de l'Activity/Fragment lors de la rotation de l'écran ou de la recréation du processus. Il utilise onSaveInstanceState et SavedStateHandle.

Résumé

  • Activity Lifecycle dans Android (onCreate → onDestroy) — la base de la gestion de l'état de l'écran
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — la clé du bon fonctionnement d'UIKit
  • Fragment Lifecycle est plus complexe que celui de l'Activity à cause de onAttach/onDetach et onCreateView/onDestroyView
  • LifecycleOwner (Android) permet un abonnement réactif aux événements sans fuites de mémoire
  • App Lifecycle gère l'état de toute l'application (Active, Background, Suspended)
  • SwiftUI utilise onAppear et onDisappear au lieu des méthodes traditionnelles de ViewController
  • Un traitement approprié du cycle de vie prévient jusqu'à 80% des crashes typiques des applications mobiles

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet