草庐IT

android - 使用 Kotlin 协程时 Room dao 类出错

我正在尝试使用kotlin协程通过here描述的方法访问房间数据库,添加了插件和依赖,并在gradle中启用了kotlin协程。在gradle文件中:kotlin{experimental{coroutines'enable'}}dependencies{implementation"org.jetbrains.kotlinx:kotlinx-coroutines-core:0.21"...}所以我添加了suspenddao类中所有方法的关键字,如下所示:道类@Query("select*frommyevent")suspendfunall():List@Deletesuspendfu

带有返回值的 Kotlin 协程

我想创建一个有返回值的协程方法。例如)funfunA()=async(CommonPool){return1}funfunB()=async(CommonPool){return2}funsum(){launch{valtotal=funA().await()+funB().await()}}如果我想用sum方法返回总和,我应该怎么做?喜欢,funsum():Int{launch{valtotal=funA().await()+funB().await()}returntotal} 最佳答案 要准确返回Int,您需要跳出协程世界,这

asynchronous - 谁负责协程的暂停和继续?

就异步编程而言,这可能是一个非常基本的问题,但我尝试阅读它并找不到任何相同的资源。假设:我对异步编程的一般想法:Whenwestartablockingoperation(networkscall,readingfromDB/file),wecandelegateittoKernelthread(s)whichwillkeepourapplicationthread(s)freeforotherjobs.Thekernelthreadwaitsforthejobtobedoneandgivesacallbacktotheapplicationthreadwheneverthejobis

java - 我可以通过在 Java 代码中使用 Kotlin 的协程来利用它们吗?

我的目标是什么?我的目标是能够从Java中使用Kotlin的协程系统。我希望能够在给定的时间内暂停执行中途,然后在给定的时间过去后在该位置恢复。从Java中,我希望能够执行允许在不以异步方式暂停执行的任务,例如://example1someLogic();pause(3000L);//3secondssomeMoreLogic();//example2while(true){someContinuedLogic();pause(10000L);//10seconds}我有什么问题?正如预期的那样,我能够从Kotlin完美地执行协程,但是对于Java,它变得很棘手,因为代码的Java部分

android - 如何在 Kotlin 1.3 中更新协程中的 UI

我正在尝试调用API,当我的变量准备好后,分别更新UI组件。这是我正在启动协程的网络单例:objectMapNetwork{fungetRoute(request:RoutesRequest,success:((response:RoutesResponse)->Unit)?,fail:((throwable:Throwable)->Unit)?=null){valcall=ApiClient.getInterface().getRoute(request.getURL())GlobalScope.launch(Dispatchers.Default,CoroutineStart.DE

kotlin - Kotlin 协程如何在内部工作?

Kotlin如何在内部实现协程?协程被称为线程的“轻量级版本”,据我了解,它们在内部使用线程来执行协程。当我使用任何构建器函数启动协程时会发生什么?这是我对运行这段代码的理解:GlobalScope.launch{Kotlin开头有一个预定义的ThreadPool。在(A)处,Kotlin开始在下一个可用的空闲线程(比如Thread01)中执行协程。在(B)处,Kotlin停止执行当前线程,并在下一个可用的空闲线程(Thread02)。当(B)执行后返回时,Kotlin在下一个可用的空闲线程(Thread03)中继续协程。(C)在Thread03上执行。在(D)处,Thread03停止

kotlin - 为什么线程表现出比协程更好的性能?

我编写了3个简单的程序来测试协程相对于线程的性能优势。每个程序都会进行很多常见的简单计算。所有程序都彼此分开运行。除了执行时间,我还通过VisualVMIDE插件测量了CPU使用率。第一个程序使用1000-threaded池进行所有计算。由于频繁的上下文变化,这段代码显示了与其他代码相比最差的结果(64326ms):valexecutor=Executors.newFixedThreadPool(1000)time=generateSequence{measureTimeMillis{valcomps=mutableListOf>()for(iin1..1_000_000){comps

android - 使用 Kotlin 1.3 在 Android 中迁移到 Kotlin 协程

我应该在我的build.gradle文件中更改什么或导入类以在我的带有Kotlin1.3的Android项目中使用稳定的协程函数?我的build.gradle中关于协程的fragment实现“org.jetbrains.kotlin:kotlin-coroutines-core:$coroutines_version”实现“org.jetbrains.kotlin:kotlin-coroutines-android:$coroutines_version”当然我用的是AndroidStudio3.3Preview 最佳答案 在bui

unit-testing - 使用 kotlin 协程时,如何对调用挂起函数的函数进行单元测试?

我有这样的课classSomeClass{funsomeFun(){//...Somesynchronouscodeasync{suspendfun()}}privatesuspendfunsuspendFun(){dependency.otherFun().await()//...othercode}}我想对someFun()进行单元测试,所以我编写了一个如下所示的单元测试:@TestfuntestSomeFun(){runBlocking{someClass.someFun()}//...verifies&asserts}但这似乎不起作用,因为在runBlocking中的所有内容完

android - 如何在 kotlin 协程上进行指数退避重试

我正在使用kotlin协程进行网络请求,使用扩展方法调用改造中的类,像这样publicsuspendfunCall.await():T{returnsuspendCancellableCoroutine{continuation->enqueue(object:Callback{overridefunonResponse(call:Call?,response:Response){if(response.isSuccessful){valbody=response.body()if(body==null){continuation.resumeWithException(NullPoi