Публикации по теме 'kotlin-coroutines'


Kotlin Coroutines: многопоточность все еще сложна
Kotlin Coroutines сейчас повальное увлечение, так что хорошо напоминать себе старые истины. Параллелизм - это сложно, очень сложно. Сопрограммы позволяют писать асинхронный код последовательным образом, но большинство предостережений, связанных с многопоточностью, по-прежнему актуальны, особенно когда задействовано несколько потоков. Я ma̶d̶e̶ видел несколько ошибок, которые проистекают из того факта, что сопрограммы могут в конечном итоге оставаться старомодными многопоточными...

Вопросы по теме 'kotlin-coroutines'

Kotlin Android Coroutines - функция приостановки, похоже, не работает в фоновом режиме
Я чувствую, что мне не хватает какой-то важной части моего понимания того, как работает этот код ниже: private fun retrieveAndStore() { launch(UI) { val service = retrofit.create(AWSService::class.java) val...
3224 просмотров
schedule 12.05.2023

Котлинские сопрограммы `runBlocking`
Я изучаю сопрограммы Kotlin. Я читал, что runBlocking - это способ связать синхронный и асинхронный код. Но каков прирост производительности, если runBlocking останавливает поток пользовательского интерфейса? Например, мне нужно запросить базу...
22555 просмотров
schedule 23.11.2022

Неправильное покрытие кода Jacoco для сопрограммы Kotlin
Я использую Jacoco для покрытия кода модульного тестирования. Отчет, созданный Jacoco, показывает, что несколько веток пропущено в моем коде Kotlin . Я заметил, что код сопрограммы и код после него не покрыты должным образом, согласно Жакоко....
3195 просмотров

Сопрограммы: runBlocking vs coroutineScope
Я читал Основы сопрограмм , пытаясь понять и изучить их. Там есть часть с этим кодом: fun main() = runBlocking { // this: CoroutineScope launch { delay(200L) println("Task from runBlocking") } coroutineScope { //...
15979 просмотров
schedule 28.07.2023

Kotlin Coroutines с узловыми модулями
Я спрашиваю себя, как я могу использовать сопрограммы Kotlin вместе с некоторыми модулями узлов. Я пытаюсь написать сервер node.js в Котлине. Было бы просто продолжать использовать известные обратные вызовы JavaScripts или, может быть, обещания,...
187 просмотров

Когда использовать ключевое слово Kotlin suspend?
fun startAsyncFunc() { launch { asyncFunc1() asyncFunc2() } } fun asyncFunc1() { ... } suspend fun asyncFunc2() { ... } Я могу закончить работу без suspend , и это даже облегчает тестирование (его можно протестировать без...
7665 просмотров
schedule 07.04.2022

Приостановка функциональных блоков основного потока
Мне трудно понять сопрограммы. Это очень простая установка. И longComputation , и delay являются функциями приостановки. Первый блокирует основной поток, второй — нет. Почему? CoroutineScope(Dispatchers.Main).launch { val result =...
833 просмотров

Запуск сопрограмм из приостановленной функции
Если у нас есть функция приостановки, но this не является CoroutineScope , как мы можем запускать другие сопрограммы, чтобы они были связаны с текущей областью действия того, что запускает эту suspending функцию?
806 просмотров
schedule 11.01.2023

Модульные тесты сопрограмм проходят индивидуально, но не выполняются вместе
У меня есть два теста сопрограмм, которые оба проходят при запуске по отдельности, но если я запускаю их вместе, второй всегда терпит неудачу (даже если я переключаю их!). Я получаю следующую ошибку: Требуется, но не вызывается:...
1510 просмотров
schedule 14.03.2022

Асинхронные задачи Firebase для сопрограмм
Я использовал построитель подпрограмм приостановки, чтобы заставить задачи Firebase перейти от кода, основанного на асинхронном прослушивателе, к коду, основанному на сопрограмме. Это моя приостановка сопрограммы, с помощью которой я добиваюсь...
1324 просмотров

GlobalScope.launch создает новый поток или работает в том же потоке?
У меня вопрос из этого кода. https://kotlinlang.org/docs/reference/coroutines/basics.html fun main() { GlobalScope.launch { // launch new coroutine in background and continue delay(1000L) // non-blocking delay for 1 second...
2134 просмотров
schedule 10.06.2022

LiveData и Coroutines - свойство должно быть инициализированным или абстрактным
Я пытаюсь использовать LiveData и Coroutines вместе в MVVM, и мне может не хватать чего-то простого. class WeatherViewModel ( private val weatherRepository: ForecastRepository ) : ViewModel() { var weather: LiveData<Weather>;...
1342 просмотров

kotlin coroutine withTimeout не отменяется при использовании withContext для получения неблокирующего кода
Я использую withContext для преобразования функции в функцию приостановки, которая не блокирует вызывающий поток. Для этого я использовал https://medium.com/@elizarov/blocking-threads-suspending-coroutines-d33e11bf4761 в качестве ссылки. Теперь...
4936 просмотров
schedule 16.03.2022

Сопрограммы: переопределение диспетчера OKHttp для использования ThreadPoolExecutor AsyncTasks, чтобы Espresso мог успешно утверждать
Я переношу приложение, которое использует Retrofit для работы с сопрограммами. В приложении есть некоторые UAT, которые дают сбой, потому что Espresso не ждет завершения сопрограмм и немедленно утверждает. CoroutineCallAdapterFactory по...
963 просмотров

Как создать адаптер вызова для приостановки функций в Retrofit?
Мне нужно создать адаптер вызовов для модернизации, который может обрабатывать такие сетевые вызовы: @GET("user") suspend fun getUser(): MyResponseWrapper<User> Я хочу, чтобы он работал с Kotlin Coroutines без использования Deferred ....
16864 просмотров

Четкое определение диспетчера сопрограмм в котлине
Я пытаюсь перейти с RxJava на сопрограммы для моих текущих проектов. Я просматривал официальный документ и наткнулся на Dispatchers . Согласно официальному документу, диспетчеры определяются как: Контекст сопрограммы включает диспетчер...
442 просмотров

Использование потоков ввода-вывода в Kotlin Coroutines
Мне нужно понимать, что если у меня есть один поток ввода-вывода в системе, я запускаю несколько операций ввода-вывода для нескольких сопрограмм, могут ли эти сопрограммы использовать один и тот же поток в приостановленном режиме (то есть, когда...
324 просмотров
schedule 11.06.2022

Испускать LiveData для обновления пользовательского интерфейса между последующими вызовами метода приостановки
Я пытаюсь обновить пользовательский интерфейс между вызовами метода приостановки, когда получаю от них результаты. Например, вот мой класс ViewModel. Методы a (), b () и c () являются приостановленными. class MainViewModel : ViewModel() {...
1448 просмотров

Обработка ошибки отсутствия подключения к Интернету в модификации 2.6 с помощью сопрограмм kotlin
Я использую модификацию 2.6 с сопрограммами kotlin для вызова API без блокировки потока пользовательского интерфейса, у меня он работает, но приложение вылетает, когда я отключаю подключение к Интернету. Ошибка logcat: E / AndroidRuntime: FATAL...
9469 просмотров

Ошибка при использовании классов из kotlinx-coroutine-test
Похоже, что зависимость kotlinx-coroutines-test не работает для меня, так как я не могу получить доступ к элементам зависимости, таким как TestCoroutineDispatcher , setMain() , resetMain() и т. Д. Я следил за этим doc , но не может получить...
1765 просмотров
schedule 08.05.2022