Sobes.tech
Junior — Middle

Cum implementează Android mecanismul de păstrare a stării ViewModel în timpul modificărilor de configurație sau în timpul ciclului de viață?

sobes.tech AI

Răspuns de la AI

În Android, ViewModel este destinat pentru a stoca și gestiona datele UI ținând cont de ciclul de viață. La schimbările de configurație (de exemplu, rotirea ecranului), sistemul distruge Activity sau Fragment, dar ViewModel rămâne păstrat și este reatribuit noilor instanțe.

Acest lucru se realizează prin ViewModelProvider, care leagă ViewModel-ul de ciclul de viață al componentului. ViewModel-ul rămâne în memorie atâta timp cât este legat de ciclul de viață al proprietarului (Activity/Fragment). Când un component este distrus din cauza unei schimbări de configurație, ViewModel-ul nu este distrus, ci este reutilizat într-o nouă instanță.

Pentru a păstra starea în interiorul ViewModel-ului, se poate folosi SavedStateHandle, un obiect special care permite salvarea și restaurarea datelor în caz de distrugere a procesului sau alte situații care depășesc o simplă schimbare de configurație.

Exemplu de utilizare a SavedStateHandle:

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

Astfel, ViewModel-ul păstrează datele în memorie în timpul schimbărilor de configurație, iar SavedStateHandle ajută la menținerea stării în evenimente mai grave, precum distrugerea procesului.