我认为从概念上讲这应该可行。但有一个错误:
挂起函数“dueWorkingHours”只能从协程或另一个挂起函数调用
Java 和 Kotlin 并行化不兼容吗?有办法解决这个问题吗?
实际上,我有
Runnable
只是为了把它扔进Handler
:
handler.postDelayed(myRunnable, 100)
如果 Kotlin 中有类似的概念我可以用它来代替,那也很好。
这不仅仅是 Java 和 Kotlin 并行性是否兼容的问题。即使在纯 Kotlin 项目中,您也永远不能从协程或其他挂起函数外部调用挂起函数。挂起函数必须有一些协程入口点才能具有 CoroutineContext、CoroutineScope 和 Continuation,这些是协程工作的必要成分。
如果您想启动一个在延迟后执行某些操作的协程,您可以使用 CoroutineScope 来启动协程,并且您可以调用
delay()
作为您在该协程中执行的第一件事。