Описание тега kotlinx.coroutines.channels

1 ответ

Производить<тип> против канала<тип> ()

Пытаться понять каналы. Я хочу направить андроид BluetoothLeScanner на канал. Почему это работает: fun startScan(filters: List&lt;ScanFilter&gt;, settings: ScanSettings = defaultSettings): ReceiveChannel&lt;ScanResult?&gt; { val channel = Channel&lt…
0 ответов

Как очистить отправленные значения с канала Coroutine?

Допустим, я отправил несколько значений в канал, val channel = Channel&lt;Int&gt;() launch { for (x in 1..5) channel.send(x * x) } Как я могу "очистить" их? Значение потреблять их, не используя их
2 ответа

Как проверить актеров Kotlin Coroutine

Я реализовал актера, как в официальных документах kotlinx.coroutines. Теперь я должен проверить их в своих инструментальных тестах, но я всегда получаю IllegalStateException: This job has not completed yet Вот мой тестовый код: @RunWith(AndroidJUnit…
1 ответ

Есть ли канал Kotlin Coroutines, эквивалентный onDispose RxJava?

Если я продлю Observable&lt;&gt; в RxJava я могу переопределить OnDispose()и выполнить очистку, например очистку вещей для сборщика мусора. OnDispose() вызывается всякий раз, когда любая подписка на это Observable&lt;&gt; утилизируется. Тем не менее…
1 ответ

Как я могу отправлять предметы в Kotlin.Flow (например, предмет поведения)

Я хотел знать, как я могу отправлять / отправлять Kotlin.Flow, так что мой вариант использования: В потребительской /ViewModel/Presenter я могу подписаться с collect функция: fun observe() { coroutineScope.launch { // 1. Send event reopsitory.observ…
4 ответа

Иногда ConflatedBroadcastChannel запускает недавнее значение без каких-либо действий

В официальной кодовой лаборатории Google, посвященной образцу расширенных сопрограмм-кодов, они использовалиConflatedBroadcastChannelчтобы наблюдать за изменением переменной / объекта. Я использовал ту же технику в одном из своих побочных проектов, …
1 ответ

Не удается разрешить api производителя

Я изучаю сопрограммы Kotlin. Я следовал руководству, в котором этот код используется для объяснения API-интерфейса производителя-потребителя сопрограмм: import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.channels.Channel import kotlinx.…
0 ответов

Проблемы с имитацией сопрограмм ProducerScope

У меня есть функция, которая создает channelFlow, а затем передает область в качестве аргумента другому классу. journeyRepository.canGetPagedJourneys(this) У меня проблемы с издевательством над "этим" (ProducerScope) Функция, которую мне нужно проте…
1 ответ

Как сканировать рекурсивные структуры с помощью сопрограмм Kotlin?

Учитывая древовидную структуру и операцию для выборки дочерних узлов узла, например: typealias NodeReference = URL data class Node( val data:Data, val childrenList:List&lt;NodeReference&gt;) suspend fun resolve(nodeRef:NodeReference) : Node Вы знает…
0 ответов

Как использовать каналы сопрограмм с функциями обратного вызова и приостановки

Я новичок в Coroutine Channels и работаю со сторонней библиотекой обмена сообщениями под названием Pubnub. Он в значительной степени полагается на обратные вызовы для различных операций, таких как получение сообщений, изменение пользовательских собы…
1 ответ

onReceiveOrClosed: уже возобновлено

Возьмите следующую программу: package example import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.runBlocking import kotlinx.coroutines.selects.select @InternalCoroutinesApi fun main()…
1 ответ

Передача / передача значений потока в BroadcastChannel

Сегодня изрядно застрял в проблеме с потоками / каналами Kotlin. По сути, я хочу взять значения, испускаемые из потока, и немедленно отправить их в канал. Затем мы подписываемся на этот канал как на поток с помощью открытого метода. Пример использов…
2 ответа

Как закрыть канал после завершения всех сопрограмм производителя?

Рассмотрим следующий код: import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.* fun main() = runBlocking&lt;Unit&gt; { val channel = Channel&lt;String&gt;() launch { channel.send("A1") channel.send("A2") log("A done") } launch { cha…
0 ответов

Kotlin Coroutines - предотвращение закрытия исходящего канала при обрыве сети [Websockets]

Я использую Ktor и веб-сокеты и заметил, что исходящий канал мгновенно закрывается при разрыве соединения. Есть ли способ предотвратить это? Я подключаюсь к веб-сокету следующим образом: fun connect(listener: MyListener) = launch { try { client.wss(…
1 ответ

Как параллельная модификация работает с сопрограммами?

Я прохожу через это coroutinesпрактическое руководство Coroutines-Channels. Итак, есть задача одновременного получения участников и одновременного отображения промежуточного прогресса с помощью channels, См. Здесь Ниже представлен фрагмент предлагае…
1 ответ

Создание очереди для функции AssessmentJavascript в WebView

У меня гибридное приложение, некоторые из моих действий используют WebView для отображения веб-контента. Веб-приложение, которое я показываю в WebView, имеет интерфейс JS, который позволяет мне отправлять команды веб-приложению для перехода в разные…
0 ответов

Невозможно отправить в канал Coroutines

Я практикую Coroutines Channel, и мне интересно, почему репозиторий.getAllRates() не срабатывает, даже если мой код достигает sellCurrencyChannel.send(CurrencyRate("", 0.0))? Я также подозреваю, что sellCurrencyChannel.send() не удалось. private val…
0 ответов

Как объединить потоки Kotlin только тогда, когда первый выдает (не нулевое) значение, отписываясь от второго, если это не так?

Я пытаюсь добиться того, чтобы просто (повторно) подписываться, когда выдает значение, отличное от . Но нет стандартного способа сделать это (как я вижу). В моем сценарии продолжать выдавать значения без необходимости дорого, поэтому мне нужен спосо…