Sobes.tech
Junior

Que pouvez-vous me dire sur le cycle de vie d'une Activity dans Android?

sobes.tech IA

Réponse de l'IA

Le cycle de vie de Activity est un ensemble d'états et de transitions entre eux, par lesquels chaque instance de Activity passe du moment de sa création jusqu'à sa destruction. Il est défini par un ensemble de méthodes de rappel (callback).

Les principales méthodes callback du cycle de vie :

  • onCreate(): Appelée lors de la première création de l'Activity. Ici, l'initialisation de l'interface utilisateur, la liaison des données et d'autres actions uniques ont lieu.
  • onStart(): Appelée lorsque l'Activity devient visible pour l'utilisateur, mais n'a pas encore reçu le focus.
  • onResume(): Appelée lorsque l'Activity reçoit le focus et devient active. C'est ici que commencent généralement les animations et autres actions interactives.
  • onPause(): Appelée lorsque l'Activity perd le focus, mais est encore visible (par exemple, une boîte de dialogue semi-transparente au-dessus). Ici, il faut arrêter les opérations gourmandes en ressources.
  • onStop(): Appelée lorsque l'Activity n'est plus visible pour l'utilisateur. Ici, les données non sauvegardées sont enregistrées et les ressources qui ne sont plus nécessaires sont libérées.
  • onDestroy(): Appelée avant que l'Activity ne soit détruite. Ici, toutes les ressources restantes sont libérées.
  • onRestart(): Appelée après onStop() lors de la réaffichage de l'Activity. Elle est suivie de onStart().

Graphiquement, le cycle de vie peut être représenté ainsi :

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Il existe également des transitions :

  • Created -> Started (après onStart())
  • Started -> Resumed (après onResume())
  • Resumed -> Paused (lorsqu'elle perd le focus)
  • Paused -> Resumed (lorsqu'elle reprend le focus)
  • Paused -> Stopped (lorsqu'elle est complètement masquée)
  • Stopped -> Destroyed (lors de la fin de l'activité)
  • Stopped -> Restarted -> Started (après onRestart())

Il est important de gérer correctement l'état de l'Activity dans ces méthodes callback pour éviter les fuites de mémoire et assurer un comportement correct de l'application lors du changement de configuration ou de la commutation entre activités. Pour sauvegarder l'état, on utilise onSaveInstanceState() (avant onStop()) et la restauration se fait dans onCreate() ou onRestoreInstanceState() (après onStart()).

Exemple d'utilisation de onSaveInstanceState() :

// Sauvegarde de l'état
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Restauration de l'état
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Utiliser myData
    }
}