В kotlinx.coroutinesбиблиотеке вы можете запустить новую сопрограмму, используя launch(с join) или async(с await). В чем разница между
В kotlinx.coroutinesбиблиотеке вы можете запустить новую сопрограмму, используя launch(с join) или async(с await). В чем разница между
Я читаю Kotlin Coroutine и знаю, что он основан на suspendфункции. Но что suspendзначит? Coroutine или функция приостанавливается? С https://kotlinlang.org/docs/reference/coroutines.html По сути, сопрограммы - это вычисления, которые можно приостановить, не блокируя поток. Я слышал, как люди часто...
Могут ли сопрограммы Kotlin использоваться в производственной среде и что означает их экспериментальный статус?
В настоящее время я пытаюсь использовать котлин сопрограммы больше. Но я сталкиваюсь с проблемой: при использовании moshi или okhttp внутри этих сопрограмм я получаю предупреждение: «неподходящий вызов метода блокировки» Каков наилучший способ исправить это? Я действительно не хочу быть неуместным...
У меня есть несколько вопросов о Kotlin Flow Я могу наблюдать LiveData из нескольких фрагментов. Могу ли я сделать это с Flow? Если да, то как? Мы можем иметь несколько LiveData из одной LiveData, используя map& switchMap. Есть ли способ иметь несколько потоков из одного источника потока?...
Обновление: это работает, если я сначала выполняю сопрограмму без таймаута, а затем с Тайм-аутом. Но если я сначала выполню сопрограмму с Timeout, то это выдаст мне ошибку. То же самое относится и к Async. Я создаю демонстрационное мультиплатформенное приложение kotlin, в котором я выполняю вызов...
Предоставляют ли сопрограммы Kotlin какие-либо гарантии «произойдет раньше»? Например, существует ли гарантия «происходит до» между записью в mutableVarи последующим чтением (потенциально) в другом потоке в этом случае: suspend fun doSomething() { var mutableVar = 0 withContext(Dispatchers.IO) {...
В прошлых операциях ввода-вывода Google Хосе Альсеррека и Йигит Бояр сказали нам, что мы больше не должны использовать LiveData для получения данных. Теперь мы должны использовать функции приостановки для однократных выборок и использовать поток Котлина для создания потока данных. Я согласен, что...
За исключением блока, в котором я объявил подпись, все блоки имеют одинаковое значение идентификатора и утверждают, что объявлены в строке 1 независимо от того, где они происходят. Может ли кто-нибудь пролить свет на то, почему это так? say 「Let's look at some blocks…」; if True { &?BLOCK.say; }...