Сообщение отправляется в ChanelFlow но не поступают в ChanelFlow.collect()
В моем проекте используется паттерн MVVM. Во ViewModel есть канал и связанный с ним Flow:
val baseChannel = Channel<BaseEvents>()
val baseEventsFlow = baseChannel.receiveAsFlow()
В Activity при старте запускается корутина, которая запускает baseEventsFlow и принимает из него сообщения:
lifecycleScope.launchWhenStarted {
try {
baseEventsFlow.collect { event ->
when (event) {
is BaseViewModel.BaseEvents.Error -> {
showError(event.msg)
}
}
}
} catch (e: Throwable) {
}
По началу прием сообщений из baseEventsFlow происходит. Затем по нажатию на кнопку открывается AlertDialog и в ViewModel запускается корутина, которая в конце своего выполнения отправляет в baseChannel сообщение:
baseChannel.send(BaseEvents.Error("error"))
Но в baseEventsFlow.collect это сообщение не попадает
Почему так происходит? Причина в использовании AlertDialog ?
Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
Причина действительно была в диалоге. Переделал код, чтобы не использовать AlertDialog и заработало.