Articles of kotlinx.coroutines

Как написать рекурсивные сопрограммы в котлин

Я хотел бы написать более быстрый File Searcher в kotlin, чтобы найти все текстовые файлы в моей домашней папке. Вот мой код с поиском последовательностей import java.io.File import java.util.concurrent.atomic.AtomicLong var count: AtomicLong = AtomicLong(0) fun main(args: Array<String>) { println(System.getProperty("user.home")) val start = System.currentTimeMillis() findTxtFile(System.getProperty("user.home") + "/git", ".txt") println("took: " + (System.currentTimeMillis() – start)) println(count.get()) } […]

Сборник процессов Котлина в параллель?

У меня есть набор объектов, которые мне нужно выполнить. В настоящее время я использую: var myObjects: List<MyObject> = getMyObjects() myObjects.forEach{ myObj -> someMethod(myObj) } Он отлично работает, но я надеялся ускорить его, запустив someMethod() параллельно, вместо того, чтобы ждать завершения каждого объекта, прежде чем начинать с следующего. Есть ли способ сделать это в Котлине? Может […]

Kotlin coroutines использует продукты и mockito, чтобы издеваться над производственной работой

Я тестирую Kotlin coroutines в своем приложении для Android, и я пытаюсь выполнить следующий модульный тест @Test fun `When getVenues success calls explore venues net controller and forwards result to listener`() = runBlocking { val near = "Barcelona" val result = buildMockVenues() val producerJob = produce<List<VenueModel>>(coroutineContext) { result.value } whenever(venuesRepository.getVenues(eq(near))) doReturn producerJob // produce corooutine […]

kotlin coroutine throws java.lang.IllegalStateException: уже возобновлено, но получил значение Место

Я совершенно новичок в разработке программ Kotlin и Android в целом. Во время игры, чтобы понять, как это работает, я столкнулся с ошибкой, которую я не могу решить. Из основного действия я пытаюсь подключиться к googleApiClient. Разрешения в порядке. Я хочу использовать kotlin coroutines для получения обновлений местоположения из LocationManager в прямом стиле, чтобы позже […]

Как лучше подождать, пока актер не остановится в kotlinx.coroutines 0.20?

В kotlinx.coroutines 0.19, actor возвращает ActorJob который может быть join : val myActor = actor<…> { … } … myActor.join() В 0.20 он изменился, чтобы вернуть SendChannel . Глядя на реализацию, он все равно возвращает экземпляр класса, который расширяет Job , поэтому я мог бы написать … (myActor as Job).join() но это очевидный запах кода. […]

Kotlin: ArrayIndexOutOfBoundsException при преобразовании DispatchTask в строку

Мы выпустили наши первые части Kotlin в производство, и мы получаем сбои с этой стопкой: Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at kotlin.jvm.internal.ReflectionFactory.renderLambdaToString(ReflectionFactory.java:47) at kotlin.jvm.internal.Reflection.renderLambdaToString(Reflection.java:80) at kotlin.jvm.internal.Lambda.toString(Lambda.kt:22) at java.lang.StringBuilder.append(StringBuilder.java:202) at kotlinx.coroutines.experimental.DispatchedContinuation.toString(CoroutineDispatcher.kt:192) at java.lang.StringBuilder.append(StringBuilder.java:202) at kotlinx.coroutines.experimental.DispatchTask.toString(CoroutineDispatcher.kt:124) at java.lang.StringBuilder.append(StringBuilder.java:202) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:5637) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Google показывает нам, что это происходит на […]

Kotlin coroutines: использование синхронного использования cassandra vs для перевода асинхронного использования

Этот вопрос, вероятно, относится и к другим библиотекам, но с использованием Cassandra в качестве конкретного примера, чтобы убедиться, что я задаю ответный вопрос: С Kotlin я могу либо использовать асинхронные методы Cassandra, а затем обернуть их интеграцией ListenableFuture или использовать синхронные методы Cassandra и обернуть их использование с помощью метода приостановки и запуска / async. […]

Как запустить метод suspend посредством отражения?

Существует блок сопрограммы, который может запускать функции приостановки. Но я вызываю функцию путем invoke через отражение. Это вызов Java-стиля, по-видимому, простой вызов не будет работать. Существуют ли способы запуска отраженного метода асинхронно? Как дождаться этого метода? import kotlin.coroutines.experimental.* class TestClass(val InString: String) { suspend fun printString() { println(InString) } } fun launch(context: CoroutineContext, block: suspend […]

Единичное тестирование сопрограмм на потоке пользовательского интерфейса

Я использую сопрограммы для выполнения асинхронного вызова на pull для обновления следующим образом: class DataFragment : Fragment(), SwipeRefreshLayout.OnRefreshListener { // other functions here override fun onRefresh() { loadDataAsync() } private fun loadDataAsync() = async(UI) { swipeRefreshLayout?.isRefreshing = true progressLayout?.showContent() val data = async(CommonPool) { service?.getData() // suspending function }.await() when { data == null -> […]

Слушатель внутри производителя

Я пытаюсь создать producer для слушателя. Мой код выглядит так: suspend fun foo() = produce{ someEvent.addListener { this.send(it) } } Но я получаю ошибку. Suspension functions can be called only within coroutine что имеет смысл. Мой вопрос. Есть ли способ реализовать этот шаблон с помощью сопрограмм?

Intereting Posts
Как создать пустой массив в котлин? Kotlin: Как я могу использовать делегированные свойства в Java? База данных Firebase Realtime, как узнать состояние «синхронизации»? Gradle не загружает репозиторий Kotlin Невозможно создать привязки вида java.lang.NullPointerException Использование синтетических свойств Котлина Странная ошибка «Val не может быть переназначена» при установке свойства в Kotlin объекта Java Как использовать Cucumber let Spring для определения уровня экспрессии? Kotlin – Как я могу получить доступ к моей новой функции расширения класса из другого файла Kotlin, как объявить скованные поля с одинаковым типом данных SwipeRefreshLayout анимация первой попытки обновления работает бесконечно нет конструктора по умолчанию для объекта JPA с Kotlin даже с плагином noarg Использование карты RXJava в Котлине? RxKotlin flattenAsObservable (): несоответствие типа с ссылкой на метод Ожидаемое значение типа Boolean: всплывающее меню