Я работаю над мультиплатформенным проектом Kotlin. И я пытаюсь использовать таймер и таймер обратного отсчета, но не могу получить доступ к kotlin.concurrent.fixedRateTimer
или import kotlin.concurrent.timer
в модуле commonMain
.
Однако kotlin.concurrent
доступен:
Это root 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()
}