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" - вроде ничего не работает ..

0 ответов

Другие вопросы по тегам