Проверяет умение перенести реактивный поток на LiveData и оценить плюсы/минусы.
Через LiveData аналогично создают val data: LiveData<Type> = liveData { emitSource(repository.getDataFlow().asLiveData()) } или используют MediatorLiveData для объединения. В отличие от Flow, LiveData автоматически привязана к lifecycle, не поддерживает backpressure и большинство операторов, но проще для UI-наблюдения без дополнительного кода.
Конвертация Flow → LiveData:
val data: LiveData<Type> = repository.getDataFlow()
.asLiveData(context = viewModelScope.coroutineContext)MediatorLiveData для комбинирования:
val result = MediatorLiveData<Result>()
result.addSource(source1) { update() }
result.addSource(source2) { update() }Отличия от Flow:
LiveData: lifecycle-aware, нет backpressure, ограниченный набор операторов.
Flow: более гибкий, поддерживает все корутинные операторы и обработку ошибок.
Выбор:
Простые UI-наблюдения → LiveData.
Сложные трансформации и комбинирование → Flow.