Какой есть аналог Flow для взаимодействия между источником данных и UI

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

Ответ

LiveData — простой аналог Flow для UI-слоя. Он автоматически учитывает жизненный цикл, но менее гибок (нет операторов как map, filter).

Пример:

val liveData = MutableLiveData<String>()
liveData.observe(viewLifecycleOwner) { data ->
    textView.text = data
}
// Обновление данных
liveData.value = "New value"

Плюсы LiveData:

  • Встроенная поддержка lifecycle
  • Простота использования

Минусы:

  • Нет сложных операторов преобразования
  • Работает только в главном потоке

Для сложных сценариев лучше использовать StateFlow/SharedFlow с корутинами.