Kako Android implementira mehanizam čuvanja stanja ViewModel tokom promena konfiguracije ili u toku životnog ciklusa?
sobes.tech АИ
Одговор од АИ
U Androidu, ViewModel je namenjen za skladištenje i upravljanje podacima korisničkog interfejsa uzimajući u obzir životni ciklus. Prilikom promena konfiguracije (npr. rotacija ekrana), sistem uništava Activity ili Fragment, ali ViewModel ostaje sačuvan i ponovo dodeljuje se novim instancama.
Ovo se postiže putem ViewModelProvider, koji povezuje ViewModel sa životnim ciklusom komponente. ViewModel ostaje u memoriji dok je povezan sa životnim ciklusom vlasnika (Activity/Fragment). Kada se komponenta uništi zbog promene konfiguracije, ViewModel se ne uništava, već se ponovo koristi u novoj instanci.
Za čuvanje stanja unutar ViewModel-a, može se koristiti SavedStateHandle, poseban objekat koji omogućava čuvanje i obnavljanje podataka u slučaju uništavanja procesa ili drugih situacija koje prevazilaze običnu promenu konfiguracije.
Primer korišćenja SavedStateHandle:
class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
var counter: Int
get() = state.get<Int>("counter") ?: 0
set(value) = state.set("counter", value)
}
Na ovaj način, ViewModel čuva podatke u memoriji tokom promena konfiguracije, a SavedStateHandle pomaže da se sačuva stanje u ozbiljnijim događajima, poput uništavanja procesa.