Какая стратегия переполнения буфера у SharedFlow

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

Ответ

SharedFlow использует стратегию BufferOverflow.SUSPEND по умолчанию. Однако можно явно указать другую стратегию через параметр onBufferOverflow в MutableSharedFlow:

  1. SUSPEND – при переполнении буфера эмиттер приостанавливается до освобождения места.
  2. DROP_OLDEST – удаляет самый старый элемент, освобождая место для нового.
  3. DROP_LATEST – отбрасывает новый элемент, сохраняя текущий буфер.

Пример:

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