Что такое SharedFlow

«Что такое SharedFlow» — вопрос из категории Coroutines и Flow, который задают на 31% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SharedFlow — это поток данных (stream) в Kotlin, который может иметь несколько подписчиков (коллекторов) и эмитит значения всем активным подписчикам. В отличие от StateFlow, он не хранит последнее значение по умолчанию и может быть настроен на буферизацию или реплей (replay) предыдущих значений.

val sharedFlow = MutableSharedFlow<Int>(replay = 2) // Буферизирует 2 последних значения

// Эмитим значения
sharedFlow.emit(1)
sharedFlow.emit(2)

// Коллектор получит 1 и 2 из-за replay
sharedFlow.collect { value -> println(value) }

Используется для событий (например, навигации, одноразовых действий), где не требуется хранение состояния. Может быть горячим (hot) — эмитит значения даже без подписчиков.