Я пишу приложение Android, используя сопрограммы Kotlin в Activity. У меня есть следующее объявление о канале, который я могу использовать для получения потока уведомлений, и хочу понять, как лучше всего выполнить связанные операции с главным диспетчером (UI):
private var stateNotifications: Channel<Notification>? = null
I В настоящее время мы создали Handler
, чтобы можно было опрашивать stateNotifications
. Его настройка выглядит следующим образом:
stateNotificationHandler.postDelayed(
handleStateNotifications,
100L
)
с handleStateNotifications
объявлено что-то вроде:
private val handleStateNotifications: Runnable = Runnable {
run {
val x = when (stateNotifications?.poll()) {
is ...
} // FIXME: UPDATE UI
stateNotificationHandler.postDelayed(
handleStateNotifications,
handleStateNotificationsInterval
)
}
}
Это похоже на работу. Тем не менее, я думаю, что должен быть способ получить stateNotifications
на диспетчере по умолчанию, а затем распределить события в потоке пользовательского интерфейса. Я думал что-то вроде этого:
launch {
flow<Notification?> {
emit(notifications.receive())
}.onEach { perhaps-invoke-a-handler-to-update-ui }.collect()
}
... но пока нет сигар.