Middle
Чӣ тавр ҳолати ViewModel-ро дар компонентҳои меъмории Android нигоҳ доштани мумкин аст?
sobes.tech AI
Ҷавоб аз AI
Барои нигоҳ доштани ҳолати ViewModel, ки аз нобудшавии раванди зинда мемонад, истифода мешавад SavedStateHandle.
SavedStateHandle як захирае монанд ба харита аст, ки бо ҳолати нигоҳдоштаи Activity ё Fragment алоқаманд аст.
Принсипи кор:
ViewModelSavedStateHandle-ро ҳамчун параметр дар конструктор мегирад.- Маълумотҳо бо истифода аз усули
set()дарSavedStateHandleнигоҳ дошта мешаванд. - Вақте ки Activity/Fragment барқарор мешавад, маълумотҳои нигоҳдошташуда автоматӣ дар
SavedStateHandle-иViewModelдастрас мешаванд, ки дубора сохта мешавад.
Маслиҳат барои истифода:
class MyViewModel(private val state: SavedStateHandle) : ViewModel() {
private val _myValue = state.getLiveData<String>("myKey")
val myValue: LiveData<String> get() = _myValue
fun saveValue(newValue: String) {
state.set("myKey", newValue)
}
}
SavedStateHandle аз нигоҳ доштани намудҳои primitives, ба монанди Int, String, Boolean, инчунин objects parcelable ва serializable дастгирӣ мекунад.
Муҳим аст, ки фаҳмед, ки SavedStateHandle барои нигоҳ доштани миқдори ками маълумоти марбут ба UI пешбинӣ шудааст. Барои нигоҳ доштани маълумоти мураккаб ё калонтар, бояд дигар механизмҳо, масалан, Room Database ё DataStore, истифода шаванд.