rememberSaveable
Conserve el estado entre cambios de configuración
rememberSaveable es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.
El problema de remember
remember sobrevive a la recomposición, pero no a cambios de configuración como la rotación de pantalla. Cuando se vuelve a crear la actividad, el estado recordado se pierde y recupera su valor inicial.
Llega rememberSaveable
rememberSaveable funciona como remember, pero también guarda el valor durante los cambios de configuración y la finalización del proceso, y después lo restaura.
var count by rememberSaveable { mutableStateOf(0) }Ejemplo de rotación
Con remember normal, al girar el teléfono el contador vuelve a 0. Con rememberSaveable, el contador se conserva durante la rotación.
Cómo se guarda
Internamente, rememberSaveable almacena el valor en el Bundle de estado de instancia guardado de la actividad, el mismo mecanismo que el antiguo sistema de vistas usaba para onSaveInstanceState.
Tipos compatibles
Guarda automáticamente los tipos que caben en un Bundle: tipos primitivos, String y objetos Parcelable. Para los tipos personalizados se necesita algo de trabajo adicional.
Finalización del proceso
Si Android finaliza su aplicación en segundo plano para recuperar memoria y el usuario vuelve a ella, rememberSaveable restaura el estado guardado para que la pantalla aparezca como la dejó el usuario.
Savers personalizados
Para un tipo que no se puede guardar automáticamente, proporcione un Saver que lo convierta a un formato guardable y viceversa. Compose ofrece auxiliares como listSaver y mapSaver.
val saver = listSaver<MyState, Any>(
save = { listOf(it.a, it.b) },
restore = { MyState(it[0] as Int, it[1] as String) }
)Uso de un Saver personalizado
Pase el saver a rememberSaveable mediante su parámetro saver para que Compose sepa cómo conservar su tipo.
var state by rememberSaveable(stateSaver = saver) {
mutableStateOf(MyState(0, ""))
}Cuándo usar cada uno
Use rememberSaveable para el estado que al usuario le molestaría perder al girar la pantalla: datos de formularios, posición de desplazamiento o pestaña seleccionada. Use remember normal para el estado transitorio de la interfaz que no importa restablecer.
No sirve para datos grandes
El Bundle guardado es pequeño. No almacene datos grandes (mapas de bits o listas extensas) en rememberSaveable. Mantenga los datos pesados en un ViewModel o repositorio y guarde únicamente identificadores pequeños.
Cómo unirlo todo
Un campo de formulario que sobrevive a la rotación gracias a rememberSaveable.
@Composable
fun LoginField() {
var email by rememberSaveable { mutableStateOf("") }
TextField(
value = email,
onValueChange = { email = it }
)
}Comprobación rápida
¿Qué hace rememberSaveable que remember no hace?
Resumen
rememberSaveable:
- Sobrevive a la rotación y a la muerte del proceso, no solo a la recomposición.
- Guarda automáticamente tipos primitivos,
StringyParcelable. - Utilice un Saver para tipos personalizados.
- Mantenga pequeños los datos guardados; los datos grandes deben estar en un ViewModel.
Preguntas frecuentes
¿La lección «rememberSaveable» es gratis?
Sí — el texto completo de «rememberSaveable» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.
¿Qué aprenderé en «rememberSaveable»?
Conserve el estado entre cambios de configuración Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Android Academy?
No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «rememberSaveable»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Android Academy?
Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.