Ответ
MVVM особенно полезен, когда нужно разделить логику представления (UI) от бизнес-логики, обеспечивая тестируемость и поддержку. Основные сценарии:
- Data Binding - автоматическое обновление UI при изменении данных
- Жизненный цикл - ViewModel сохраняет состояние при повороте экрана
- Тестирование - бизнес-логика тестируется без Android-зависимостей
Пример:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun loadData() {
_data.value = "Loaded data"
}
}
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val viewModel = ViewModelProvider(this)[MyViewModel::class.java]
viewModel.data.observe(this) { data ->
textView.text = data
}
}
}