Ответ
Параметр replayCache в SharedFlow определяет количество последних значений, которые будут отправлены новым подписчикам при их подключении. Это буфер, хранящий последние replay значений.
Пример:
val flow = MutableSharedFlow<Int>(replay = 3)
flow.tryEmit(1)
flow.tryEmit(2)
flow.tryEmit(3)
flow.tryEmit(4)
// Новый подписчик получит последние 3 значения: 2, 3, 4
flow.collect { println(it) }
Нюансы:
- При
replay = 0новые подписчики не получат старых значений - Увеличение
replayтребует больше памяти - Не влияет на обычных подписчиков, только на новых