Sobes.tech
Middle

Ինչպես պահպանել ViewModel-ի վիճակը Android-ի ճարտարապետական բաղադրիչներում?

sobes.tech AI

Պատասխան AI-ից

Իմաստուն է ViewModel-ի վիճակը պահպանելու համար, որը կվճարի գործընթացի ոչնչացմանը, օգտագործել SavedStateHandle-ը:

SavedStateHandle-ը նման է Map-ով, կապված է պահվող վիճակի հետ Activity կամ Fragment-ի:

Աշխատանքի սկզբունքը՝

  1. ViewModel-ը ստանում է SavedStateHandle-ը որպես կոնստրուկտորի պարամետր:
  2. Տվյալները պահվում են set() մեթոդով SavedStateHandle-ում:
  3. 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-ը աջակցում է primitive տիպերի պահպանումը, ինչպիսիք են Int, String, Boolean, ինչպես նաև parcelable և serializable օբյեկտները:

Կարևոր է հասկանալ, որ SavedStateHandle-ը նախատեսված է փոքր քանակությամբ UI-կապված տվյալների պահպանման համար: Ավելի բարդ կամ մեծածավալ տվյալների պահպանման համար պետք է օգտագործել այլ մեխանիզմներ, օրինակ՝ Room Database կամ DataStore: