jjzjj

coroutine

全部标签

android - 为什么这个 Kotlin Coroutine 会卡住界面?

因此,我让这段代码在“onBindViewHolder”回收器的适配器方法中运行:launch(UI){valbitmapDrawable=loadLargeBitmapDrawable()imageView.setImageDrawable(bitmapDrawable)}这让我的应用卡住了几秒钟,锁定了我的主线程。但后来我改成了这样:launch{//为什么会这样?协同程序的目的是使同一线程(UI)内的事物异步,对吧?有人可以解释为什么我必须在另一个协程范围内运行UI协程吗? 最佳答案 Thepurposeofcoroutine

generator - 作为扩展函数调用的序列生成器失败并显示 "receiver type mismatch"

我正在尝试从添加到LongRange的单个Long值生成序列。这有效:valseq=buildSequence{yield(2)yieldAll(3L..5)}但试图概括它,我似乎无法构造一个我可以成功调用的扩展函数:infixfunLong.join(R:LongRange):Sequence{valstart=thisreturnbuildSequence{yield(start)yieldAll(R)}}当我尝试调用它时:(2join3..5).forEach{/*dosomething*/}我明白了Error:(26,20)Kotlin:Unresolvedreference.

generator - 作为扩展函数调用的序列生成器失败并显示 "receiver type mismatch"

我正在尝试从添加到LongRange的单个Long值生成序列。这有效:valseq=buildSequence{yield(2)yieldAll(3L..5)}但试图概括它,我似乎无法构造一个我可以成功调用的扩展函数:infixfunLong.join(R:LongRange):Sequence{valstart=thisreturnbuildSequence{yield(start)yieldAll(R)}}当我尝试调用它时:(2join3..5).forEach{/*dosomething*/}我明白了Error:(26,20)Kotlin:Unresolvedreference.

android - 在主线程外运行时对 Cloud Firestore 进行同步调用

我正在基于AndroidCleanArchitectureKotlin版本(https://github.com/android10/Android-CleanArchitecture-Kotlin)构建应用。使用这种架构,每次你想调用一个用例时,都会启动一个Kotlin协程,并将结果发布到主线程中。这是通过以下代码实现的:abstractclassUseCasewhereType:Any{abstractsuspendfunrun(params:Params):Eitherfunexecute(onResult:(Either)->Unit,params:Params){valjob

android - 在主线程外运行时对 Cloud Firestore 进行同步调用

我正在基于AndroidCleanArchitectureKotlin版本(https://github.com/android10/Android-CleanArchitecture-Kotlin)构建应用。使用这种架构,每次你想调用一个用例时,都会启动一个Kotlin协程,并将结果发布到主线程中。这是通过以下代码实现的:abstractclassUseCasewhereType:Any{abstractsuspendfunrun(params:Params):Eitherfunexecute(onResult:(Either)->Unit,params:Params){valjob

kotlin - 为什么无法在 Kotlin 中使用对 `suspend` 函数的方法引用?

我有一个Job实例列表,我想在启动后的某个时间点取消这些实例。如下所示:valjobs=arrayListOf()//launchandaddjobs...jobs.forEach{it.cancelAndJoin()}//cancelsthejobsandwaitsforcompletion很遗憾,这里不能使用方法引用。原因:cancelAndJoin是一个suspend函数,编译器提示:jobs.forEach(Job::cancelAndJoin)“错误:(30,24)Kotlin:Unsupported[Callablereferencestosuspendfunctions]

kotlin - 为什么无法在 Kotlin 中使用对 `suspend` 函数的方法引用?

我有一个Job实例列表,我想在启动后的某个时间点取消这些实例。如下所示:valjobs=arrayListOf()//launchandaddjobs...jobs.forEach{it.cancelAndJoin()}//cancelsthejobsandwaitsforcompletion很遗憾,这里不能使用方法引用。原因:cancelAndJoin是一个suspend函数,编译器提示:jobs.forEach(Job::cancelAndJoin)“错误:(30,24)Kotlin:Unsupported[Callablereferencestosuspendfunctions]

kotlin - 在 IntelliJ IDEA 项目中使用 kotlinx.coroutines

我正在尝试学习协程,因此我启动了IntelliJ并创建了一个暂存文件。但是当我输入协程时,我会收到编译器投诉,例如runBlockingisanunresolvedreference。所以这不是一个android项目或任何类似的东西。只是一个基本Kotlin项目中的临时文件。如何引入协程的东西,以免出错? 最佳答案 runBlocking和其他高级协程实用程序不在Kotlin标准库中,而是库的一部分kotlinx.coroutines.要在您的项目中使用此库,您必须下载其二进制文件并将对它们的依赖项添加到项目中。如果您使用Gradl

kotlin - 在 IntelliJ IDEA 项目中使用 kotlinx.coroutines

我正在尝试学习协程,因此我启动了IntelliJ并创建了一个暂存文件。但是当我输入协程时,我会收到编译器投诉,例如runBlockingisanunresolvedreference。所以这不是一个android项目或任何类似的东西。只是一个基本Kotlin项目中的临时文件。如何引入协程的东西,以免出错? 最佳答案 runBlocking和其他高级协程实用程序不在Kotlin标准库中,而是库的一部分kotlinx.coroutines.要在您的项目中使用此库,您必须下载其二进制文件并将对它们的依赖项添加到项目中。如果您使用Gradl

java - 如何从 Java 7 调用 Kotlin 挂起协程函数

我正在尝试从Java7调用Kotlin函数。我正在使用协程,这个被调用的函数正在挂起,例如:suspendfunsuspendingFunction():Boolean{returnasync{longRunningFunction()}.await()}suspendfunlongRunningFunction():Boolean{delay(400)returntrue}我在0.25.3版本中使用协程,我可以通过传递Continuation来模拟简单的Java回调样式。实例作为挂起函数的参数,例如CoroutinesKt.suspendingFunction(newContinua