从 Runnable.run() 内部调用挂起函数

问题描述 投票:0回答:1

我认为从概念上讲这应该可行。但有一个错误:

挂起函数“dueWorkingHours”只能从协程或另一个挂起函数调用

Java 和 Kotlin 并行化不兼容吗?有办法解决这个问题吗?

实际上,我有

Runnable
只是为了把它扔进
Handler

handler.postDelayed(myRunnable, 100)

如果 Kotlin 中有类似的概念我可以用它来代替,那也很好。

kotlin parallel-processing kotlin-coroutines runnable
1个回答
1
投票

这不仅仅是 Java 和 Kotlin 并行性是否兼容的问题。即使在纯 Kotlin 项目中,您也永远不能从协程或其他挂起函数外部调用挂起函数。挂起函数必须有一些协程入口点才能具有 CoroutineContext、CoroutineScope 和 Continuation,这些是协程工作的必要成分。

如果您想启动一个在延迟后执行某些操作的协程,您可以使用 CoroutineScope 来启动协程,并且您可以调用

delay()
作为您在该协程中执行的第一件事。

© www.soinside.com 2019 - 2024. All rights reserved.