【发布时间】:2020-06-03 08:49:05
【问题描述】:
我需要在等待两秒后执行一些代码(不阻塞 UI 线程)。问题是这通常可以使用 Timer 或 Handler 解决,但我的应用程序使用的是 Kotlin Multiplatform,所以我需要它只是纯 Kotlin,而不是任何 Java 库。
如果我愿意,我还需要能够取消计时器。
我看到this answer 提出或多或少相同的问题,但他们使用以下方法解决了问题:
runBlocking {
println("Wait for 5sec")
delay(5000)
println("Done waiting for 5sec")
}
但我真的不知道如何取消它,也不知道这是否会阻止应用程序的其余部分。
【问题讨论】:
-
你差不多完成了,而不是 runBlocking 只需将它启动到像 Dispatchers.Main 或 Dispatchers.Default 这样的调度程序。它不会阻止任何东西。
-
@AnimeshSahu 那也可以取消吗?
-
是的!协程本身是可取消的,除非它阻塞了某些东西,在启动的情况下它不会阻塞。
标签: android kotlin kotlin-multiplatform