Sobes.tech
Middle

Чӣ тавр ҳолати ViewModel-ро дар компонентҳои меъмории Android нигоҳ доштани мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Барои нигоҳ доштани ҳолати ViewModel, ки аз нобудшавии раванди зинда мемонад, истифода мешавад SavedStateHandle.

SavedStateHandle як захирае монанд ба харита аст, ки бо ҳолати нигоҳдоштаи Activity ё Fragment алоқаманд аст.

Принсипи кор:

  1. ViewModel SavedStateHandle-ро ҳамчун параметр дар конструктор мегирад.
  2. Маълумотҳо бо истифода аз усули set() дар SavedStateHandle нигоҳ дошта мешаванд.
  3. Вақте ки Activity/Fragment барқарор мешавад, маълумотҳои нигоҳдошташуда автоматӣ дар SavedStateHandleViewModel дастрас мешаванд, ки дубора сохта мешавад.

Маслиҳат барои истифода:

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, истифода шаванд.