Можно ли добавить значения в поток после того, как он был создан?
До сих пор я видел примеры построителя потока, где строитель определяет, какие значения будут отправлены и когда. Однако, что если мне нужно создать поток и подписаться на него на уровне пользовательского интерфейса, прежде чем будет получено какое-либо значение. Затем мне нужно добавить значения к нему в другом слое (например, домен). Поэтому я подумал, что создам пустой построитель потока, а затем добавлю значения, но это не работает. Эта модель работает с каналами, но я не хочу использовать устаревший API, см. Ниже. Мне нужен механизм, который бы связывал доменный и пользовательский интерфейсы и был бы заметен. Другая проблема с каналами состоит в том, что я не могу очистить данные внутри него, последнее значение всегда остается там.
private val channel = ConflatedBroadcastChannel<Data>()
override val flow: Flow<Data> = flow {
channel.consumeEach { data ->
this.emit(data)
}
}
override suspend fun setGraph(domainData: Data) {
channel.send(domainData)
}