如何定义一个任务,运行 将来,以及使用 Kotlin 协程取消它

How to define a task, run it in the future, and cancel it using Kotlin coroutines

我是科特林的新手 Coroutines。我定义了一个 Runnable 并在函数中使用 Handler 延迟调用它。重要的是在每次调用之前必须取消之前的任务,这样才不会延迟执行。这是我使用 HandlerRunnable 的代码。我如何使用 Kotlin 做到这一点 Coroutines?

val runnable = java.lang.Runnable {
    ....
}

val handler = Handler()

private fun myFunction() {
      handler.removeCallbacks(runnable)// This is important
      handler.postDelayed(runnable, 3000)
 }

您可以定义一个Job并取消它:

private var job: Job? = null

private fun myFunction() {
  job?.cancel()
  job = scope.launch(ioDispatcher) {
            delay(3000)
            ...
        }
}