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
Невозможно вернуть факториальный результат в функцию tailrec в Котлине Невозможно установить OnItemClickListener для spinner в android Объекты Companion – Android хочет зарегистрировать их как действия (?) Когда у меня есть выбранный вид и сдвигается вниз по строке состояния, когда я поднимаю его снова, вид не выбран Невозможно использовать пользовательский getter с делегированным свойством Как решить: «ошибка: не удается найти класс символов …» после преобразования класса Java в Kotlin? Предельная функция в Котлине Как преобразовать java.util.stream.Stream <Something> в kotlin.Sequence <Something> Неопределенная ссылка в Android Studio 3 Canary В kotlin, как сделать сеттер свойств в основном конструкторе частным? Восстановить N-арное дерево из списка Является ли «org.jetbrains.anko: anko-commons: $ anko_version» неправильным? Котлинский пользовательский сеттер Как обеспечить общий тип с помощью взаимодействия Kotlin Храните BaseActivity в Java совместимым с Kotlin Activity