Каким образом реализовать хранение и управление состоянием данных внутри ViewModel?
Ответ от нейросети
sobes.tech AI
Для хранения и управления состоянием данных внутри ViewModel в Android обычно используют MutableLiveData или StateFlow.
-
MutableLiveData — это класс, который позволяет хранить данные и уведомлять наблюдателей (обычно UI) об изменениях. В ViewModel создаётся приватное MutableLiveData, а наружу предоставляется только LiveData для чтения, чтобы избежать изменения состояния из UI.
-
StateFlow — это часть Kotlin Coroutines, которая представляет собой поток с состоянием. Он более современный и удобный для реактивного программирования.
Пример с LiveData:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun updateData(newValue: String) {
_data.value = newValue
}
}
Пример с StateFlow:
class MyViewModel : ViewModel() {
private val _state = MutableStateFlow("initial")
val state: StateFlow<String> = _state
fun updateState(newValue: String) {
_state.value = newValue
}
}
Таким образом, ViewModel хранит состояние, а UI подписывается на изменения и обновляется автоматически, что обеспечивает разделение ответственности и устойчивость к изменениям конфигурации.