Sobes.tech
Junior — Middle

¿Cómo implementa Android el mecanismo de conservación del estado de ViewModel durante cambios de configuración o en el ciclo de vida?

sobes.tech AI

Respuesta de la IA

En Android, ViewModel está diseñado para almacenar y gestionar datos de la interfaz de usuario teniendo en cuenta el ciclo de vida. Cuando hay cambios de configuración (por ejemplo, la rotación de pantalla), el sistema destruye la Activity o Fragment, pero el ViewModel se mantiene y se vuelve a proporcionar a las nuevas instancias.

Esto se logra mediante ViewModelProvider, que vincula el ViewModel al ciclo de vida del componente. El ViewModel se mantiene en memoria mientras esté asociado con el ciclo de vida del propietario (Activity/Fragment). Cuando el componente se destruye debido a un cambio de configuración, el ViewModel no se destruye, sino que se reutiliza en una nueva instancia.

Para guardar el estado dentro del ViewModel, se puede usar SavedStateHandle, un objeto especial que permite guardar y restaurar datos en caso de destrucción del proceso u otras situaciones que van más allá de un simple cambio de configuración.

Ejemplo de uso de SavedStateHandle:

class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
    var counter: Int
        get() = state.get<Int>("counter") ?: 0
        set(value) = state.set("counter", value)
}

De esta forma, el ViewModel guarda datos en memoria durante cambios de configuración, y SavedStateHandle ayuda a mantener el estado en eventos más graves, como la destrucción del proceso.