Android - MutableSharedFlow не удалось собрать новые значения с несколькими подписчиками
Я хочу создать модель общего представления для связи MainActivity с фрагментами. Я решил использовать поток обмена для управления событиями.
private val _sharedChannel: MutableSharedFlow<SharedEvent> = MutableSharedFlow(
replay = 0,extraBufferCapacity=0,onBufferOverflow = BufferOverflow.SUSPEND)
val sharedChannel = _sharedChannel.asSharedFlow()
Мне не нужно кэшировать последнее событие, даже если ориентация меняется .. поэтому я установил "replay = 0"
Когда собираю события только по основному занятию - все работает нормально:
lifecycleScope.launchWhenStarted {
gamePlaySharedViewModel.sharedChannel.collect { event->
SnappLog.log("GamePlayContainer-> sharedChannel EVENT: $event ")
when(event){
GamePlaySharedViewModel.SharedEvent.OnBackPress -> {
onBackPressed()
}
is GamePlaySharedViewModel.SharedEvent.BlockScreen -> {
blockScreen(event.isBlocked)
}
else -> {
}
}
}
}
}
При добавлении второго подписчика к другому фрагменту - оба подписчика перестают получать события после первого (первое событие отправлено успешно ..) что я могу сделать, чтобы подписаться на multi MutableSharedFlow? Пытался увеличить количество "повторов" и изменить "onBufferOverflow" - вроде ничего не работает ..