Middle
Ինչպես պահպանել ViewModel-ի վիճակը Android-ի ճարտարապետական բաղադրիչներում?
sobes.tech AI
Պատասխան AI-ից
Իմաստուն է ViewModel-ի վիճակը պահպանելու համար, որը կվճարի գործընթացի ոչնչացմանը, օգտագործել SavedStateHandle-ը:
SavedStateHandle-ը նման է Map-ով, կապված է պահվող վիճակի հետ Activity կամ Fragment-ի:
Աշխատանքի սկզբունքը՝
ViewModel-ը ստանում էSavedStateHandle-ը որպես կոնստրուկտորի պարամետր:- Տվյալները պահվում են
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-ը աջակցում է primitive տիպերի պահպանումը, ինչպիսիք են Int, String, Boolean, ինչպես նաև parcelable և serializable օբյեկտները:
Կարևոր է հասկանալ, որ SavedStateHandle-ը նախատեսված է փոքր քանակությամբ UI-կապված տվյալների պահպանման համար: Ավելի բարդ կամ մեծածավալ տվյալների պահպանման համար պետք է օգտագործել այլ մեխանիզմներ, օրինակ՝ Room Database կամ DataStore: