ViewModelda ma'lumotlarni saqlash va ilovaning holatini saqlash uchun onSaveInstanceState metodidan foydalanish o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
ViewModel va onSaveInstanceState holat uchun xizmat qiladi, ammo ular turli tarzda ishlaydi va turli maqsadlar uchun mo'ljallangan.
-
ViewModel ma'lumotlarni Activity yoki Fragmentning hayot aylanishiga bog'langan xotirada saqlaydi. U ekran burilishlari va boshqa konfiguratsiya o'zgarishlariga chidamli bo'lib, ma'lumotlarni qayta yuklamasdan saqlab qoladi. Biroq, ilovaning jarayoni to'liq tugatilganda (masalan, xotira yetishmasligi sababli) ViewModel ma'lumotlari yo'qoladi.
-
onSaveInstanceState kichik ma'lumotlarni Bundle ob'ekti ichida saqlaydi, u seriyalashgan va jarayon tugatilgandan so'ng Activity qayta yaratilganda tizim tomonidan tiklanadi. Bu usul oddiy va kichik ma'lumotlarni (masalan, UI holati) saqlash uchun mos, ammo katta hajmli yoki murakkab ob'ektlar uchun emas.
Misol:
class MyViewModel : ViewModel() {
var userData: String? = null
}
// Activity ichida
val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// onSaveInstanceState
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("key", "value")
}
// onCreate ichida tiklash
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val value = savedInstanceState?.getString("key")
}
Xulosa:
- Ekran burilishidan o'tib qolishi uchun ma'lumotlarni saqlash uchun ViewModel dan foydalaning.
- Activity yoki jarayon to'liq yo'q qilingandan so'ng, holatni tiklash uchun onSaveInstanceState dan foydalaning.