1. Livres & vidéos
  2. Kotlin
  3. Architecturez votre application
Extrait - Kotlin Du code au Play Store : le guide complet pour développeurs Android
Extraits du livre
Kotlin Du code au Play Store : le guide complet pour développeurs Android Revenir à la page d'achat du livre

Architecturez votre application

Implémenter le modèle MVVM avec Jetpack Compose

Pour concevoir une application Android maintenable, le choix d’une architecture adaptée est essentiel. Parmi les architectures couramment utilisées en développement Android, le modèle MVVM (Model-View-ViewModel) se distingue par sa capacité à organiser distinctement les responsabilités, améliorant ainsi la lisibilité, la maintenabilité et la testabilité du code.

1. Qu’est-ce que le MVVM ?

Le modèle MVVM repose sur trois composants essentiels, dont chacun joue un rôle spécifique et complémentaire :

  • Le modèle (model) : c’est la couche responsable de la gestion des données. Qu’il s’agisse de données locales ou distantes, le modèle agit comme la source unique de vérité. Cette couche s’abstrait complètement de l’interface utilisateur et ne connaît ni son existence ni son fonctionnement précis.

  • La vue (view) : elle correspond directement à l’interface utilisateur, incarnée dans Jetpack Compose par des fonctions Composable. La vue observe les données provenant du ViewModel et se met à jour automatiquement dès que ces données évoluent, assurant ainsi une expérience utilisateur fluide et réactive.

  • Le ViewModel : pièce maîtresse de ce modèle, le ViewModel représente l’intermédiaire entre la vue et le modèle. Il gère l’état de l’interface, traite les interactions utilisateur, et récupère ou modifie les données à travers...

Gérer l’état avec ViewModel et StateFlow

En programmation réactive, l’état représente les données que l’interface affiche et qui peuvent évoluer dans le temps. Pendant longtemps, les développeurs Android ont utilisé LiveData, un composant lié au cycle de vie qui n’envoie de notifications qu’aux observateurs actifs. Avec l’arrivée de Kotlin Coroutines, StateFlow s’est imposé comme l’alternative recommandée. C’est un flux d’état « chaud » qui conserve toujours la dernière valeur émise et favorise un flux de données unidirectionnel.

Jetpack Compose se prête bien à cette approche. Grâce à son modèle déclaratif, il observe les changements d’état et déclenche automatiquement une recomposition de l’interface. Combiné à StateFlow, chaque modification d’une valeur déclenche la mise à jour des Composables qui en dépendent.

Concrètement, StateFlow conserve toujours la dernière valeur émise et la fournit immédiatement à tout nouvel observateur. Cela garantit qu’un composant Compose dispose toujours de l’état le plus récent au moment de sa recomposition. 

Le principe de séparation des responsabilités s’applique ici. Le modèle contient les règles métier, sans connaissance de l’interface. Le ViewModel détient le MutableStateFlow et gère les mises à jour. La vue Composable s’abonne à ce flux et se redessine à chaque nouvelle valeur.

Prenons un exemple simple : un compteur qui s’incrémente à chaque clic. Le modèle...