Ответ
SharedFlow использует стратегию BufferOverflow.SUSPEND по умолчанию. Однако можно явно указать другую стратегию через параметр onBufferOverflow в MutableSharedFlow:
- SUSPEND – при переполнении буфера эмиттер приостанавливается до освобождения места.
- DROP_OLDEST – удаляет самый старый элемент, освобождая место для нового.
- DROP_LATEST – отбрасывает новый элемент, сохраняя текущий буфер.
Пример:
val sharedFlow = MutableSharedFlow<Int>(
replay = 2,
extraBufferCapacity = 3,
onBufferOverflow = BufferOverflow.DROP_OLDEST
)