Sobes.tech
Junior — Middle

Android konfiguratsiya o'zgarishlari yoki hayot aylanishi davomida ViewModel holatini saqlash mexanizmini qanday amalga oshiradi?

sobes.tech AI

AIdan javob

Androidda ViewModel UI ma'lumotlarini saqlash va boshqarish uchun mo'ljallangan bo'lib, u hayot aylanishini hisobga oladi. Konfiguratsiya o'zgarishlari (masalan, ekranni aylantirish) paytida tizim Activity yoki Fragmentni yo'q qiladi, lekin ViewModel saqlanib qoladi va yangi nusxalarga qayta taqdim etiladi.

Bu ViewModelProvider orqali amalga oshiriladi, u ViewModelni komponentning hayot aylanishiga bog'laydi. ViewModel, egasining (Activity/Fragment) hayot aylanishi bilan bog'liq bo'lib, xotirada saqlanadi. Konfiguratsiya o'zgarishi sababli komponent yo'q qilinsa ham, ViewModel yo'q qilinmaydi, balki yangi nusxada qayta ishlatiladi.

ViewModel ichida holatni saqlash uchun SavedStateHandle dan foydalanish mumkin, bu maxsus obyekt bo'lib, jarayonning yo'q qilinishi yoki boshqa holatlarda ma'lumotlarni saqlash va tiklash imkonini beradi.

SavedStateHandle dan foydalanish misoli:

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

Shu tarzda, ViewModel konfiguratsiya o'zgarishlari davomida ma'lumotlarni xotirada saqlaydi, SavedStateHandle esa jarayonning yo'q qilinishi kabi muhim voqealarda holatni saqlashga yordam beradi.