Какие настройки можно задать у SharedFlow

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

Ответ

SharedFlow — это "горячий" поток данных, который можно настраивать через параметры конструктора:

  • replay — количество последних значений, которые будут отправлены новым подписчикам (по умолчанию 0).
  • extraBufferCapacity — дополнительный буфер поверх replay (если подписчики не успевают обрабатывать данные).
  • onBufferOverflow — стратегия при переполнении буфера:
    • BufferOverflow.SUSPEND (по умолчанию) — приостанавливает эмиттер.
    • BufferOverflow.DROP_OLDEST — удаляет самое старое значение.
    • BufferOverflow.DROP_LATEST — отбрасывает новое значение.

Пример:

val sharedFlow = MutableSharedFlow<Int>(
    replay = 2,
    extraBufferCapacity = 1,
    onBufferOverflow = BufferOverflow.DROP_OLDEST
)