Как View подписывается на получение данных

«Как View подписывается на получение данных» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Во ViewModel данные хранятся в LiveData или StateFlow. View (Activity/Fragment) подписывается через observer:

// ViewModel
val userData = MutableLiveData<String>()

// Activity
viewModel.userData.observe(this) { data ->
    textView.text = data
}

Для StateFlow:

// ViewModel
val uiState = MutableStateFlow("")

// Fragment
lifecycleScope.launchWhenStarted {
    viewModel.uiState.collect { data ->
        textView.text = data
    }
}

Ключевые моменты:

  1. View не изменяет данные напрямую
  2. Подписка привязывается к lifecycle (автоматически отписывается)
  3. Для Compose используйте collectAsState()
  4. Избегайте утечек памяти через viewLifecycleOwner в Fragment