Ответ
В MVVM взаимодействие строится через ViewModel, которая выступает посредником между View (активити/фрагмент) и Model (данные, репозиторий).
View подписывается на LiveData/StateFlow из ViewModel и реагирует на изменения данных. View вызывает методы ViewModel для обработки действий пользователя. ViewModel не имеет ссылок на View, что предотвращает утечки памяти.
Пример с LiveData:
// ViewModel
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun loadData() {
_data.value = "Hello MVVM"
}
}
// Activity
viewModel.data.observe(this) { data ->
textView.text = data
}
button.setOnClickListener {
viewModel.loadData()
}
Ключевые моменты:
- ViewModel хранит состояние
- View подписывается на изменения
- Двусторонняя привязка через Data Binding (опционально)