【发布时间】:2020-10-21 06:54:21
【问题描述】:
我正在开发一个 Kotlin 多平台项目。我正在尝试使用计时器和倒数计时器,但我无法访问 commonMain 模块中的 kotlin.concurrent.fixedRateTimer 或 import kotlin.concurrent.timer。
这是根build.gradle:
plugins {
kotlin("multiplatform")
id("com.android.library")
id("kotlin-android-extensions")
}
// ...
kotlin {
//...
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.4.10")
implementation("org.jetbrains.kotlin:kotlin-reflect:1.4.10")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
//...
}
}
//...
}
}
我想知道是否可以在那里使用这些方法。如果没有,如何在commonMain模块中编写定时器和倒计时?
我曾尝试使用Coroutines 来实现相同的功能,但由于不精确而失败:
fun doAfter(delay: Long, action: () -> (Unit)) = launch {
delay(delay)
action.invoke()
}
fun countdown(time: Long, tick: Long, onTick: () -> (Unit), onFinish: () -> (Unit)) = launch {
val ticks = (time / tick).toInt()
repeat(ticks) {
onTick()
delay(tick)
}
onFinish()
}
【问题讨论】:
标签: kotlin kotlin-multiplatform