rememberSaveable
Conservez l'état lors des changements de configuration.
rememberSaveable est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.
Le problème de remember
remember résiste à la recomposition, mais pas aux changements de configuration tels que la rotation de l’écran. Lorsque l’activité est recréée, l’état mémorisé est perdu et reprend sa valeur initiale.
Voici rememberSaveable
rememberSaveable fonctionne comme remember, mais enregistre également la valeur lors des changements de configuration et de la destruction du processus, puis la restaure.
var count by rememberSaveable { mutableStateOf(0) }Exemple de rotation
Avec remember seul, faire pivoter le téléphone remet un compteur à 0. Avec rememberSaveable, la valeur du compteur est conservée après la rotation.
Fonctionnement de l’enregistrement
En arrière-plan, rememberSaveable stocke la valeur dans le Bundle d’état enregistré de l’instance de l’activité, le même mécanisme que celui utilisé par l’ancien système View pour onSaveInstanceState.
Types pris en charge
La fonction enregistre automatiquement les types compatibles avec un Bundle : les types primitifs, String et les objets Parcelable. Les types personnalisés nécessitent un peu de travail supplémentaire.
Destruction du processus
Si Android arrête votre application en arrière-plan pour récupérer de la mémoire, puis que l’utilisateur revient, rememberSaveable restaure l’état enregistré afin que l’écran apparaisse comme l’utilisateur l’avait laissé.
Enregistreurs personnalisés
Pour un type qui ne peut pas être enregistré automatiquement, fournissez un enregistreur qui le convertit vers et depuis une forme enregistrable. Compose propose des fonctions auxiliaires telles que listSaver et mapSaver.
val saver = listSaver<MyState, Any>(
save = { listOf(it.a, it.b) },
restore = { MyState(it[0] as Int, it[1] as String) }
)Utiliser un enregistreur personnalisé
Transmettez l’enregistreur à rememberSaveable via son paramètre saver afin que Compose sache comment conserver votre type.
var state by rememberSaveable(stateSaver = saver) {
mutableStateOf(MyState(0, ""))
}Lequel utiliser, et quand ?
Utilisez rememberSaveable pour les états que l’utilisateur regretterait de perdre lors d’une rotation — saisie d’un formulaire, position de défilement ou onglet sélectionné. Utilisez remember seul pour les états temporaires de l’interface qu’il est acceptable de réinitialiser.
Pas pour les données volumineuses
Le Bundle enregistré est de petite taille. Ne stockez pas de données volumineuses (images bitmap, longues listes) dans rememberSaveable. Conservez les données lourdes dans un ViewModel ou un référentiel, et n’enregistrez que de petits identifiants.
Pour tout assembler
Un champ de formulaire qui survit à la rotation grâce à rememberSaveable.
@Composable
fun LoginField() {
var email by rememberSaveable { mutableStateOf("") }
TextField(
value = email,
onValueChange = { email = it }
)
}Vérification rapide
Que fait rememberSaveable que remember ne fait pas ?
Récapitulatif
rememberSaveable :
- Survit à la rotation et à la destruction du processus, et pas seulement à la recomposition.
- Enregistre automatiquement les types primitifs,
StringetParcelable. - Utilisez un Saver pour les types personnalisés.
- Conservez des données enregistrées peu volumineuses ; les données importantes doivent être placées dans un ViewModel.
Questions Fréquemment Posées
La leçon « rememberSaveable » est-elle gratuite ?
Oui — le texte complet de « rememberSaveable » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « rememberSaveable » ?
Conservez l'état lors des changements de configuration. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « rememberSaveable » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.