【发布时间】:2021-09-25 02:29:21
【问题描述】:
我想在 Android Studio 中使用 kotlin 创建一个程序,我在其中使用计时器,它每 20 毫秒执行一次操作并无限运行。我用过这样的东西:
object : CountDownTimer(10000,20){
override fun onTick(millisUntilFinished: Long) {
}
override fun onFinish() {
start()
}
}.start()
但问题是,经过一段时间后,计时器开始变慢,当 1 秒应该过去时,实际上是 6 秒。将动作更改为 40 毫秒或更长时间只会有一点帮助,因为稍后它仍然会变慢。我看到人们使用的计时器实际上可以毫无问题地工作,但它是在 Java 中的,当我尝试在 Android Studio 的帮助下将其更改为 Kotlin 时(我从未使用过 Java),它最终无法正常工作(启动后,该应用程序每次都崩溃)。有人知道如何创建或使用除我上面在 kotlin 中显示的 CountDownTimer 之外的其他计时器吗?
编辑: 我忘了添加适合我的代码。这基本上是我接受的答案,但我必须进行一些更改才能使其正常工作,所以它是:
val timerName = lifecycleScope.launch(Dispatchers.IO) {
while (isActive) {
lifecycleScope.launch {
doSomething()
}
delay(20L)
}
}
【问题讨论】:
-
你为什么要这样做?
-
@cutiko 我想做一个游戏,每次特定时间都会加分。
-
如果你使用 Kotlin 编写代码,你可以
launch一个在循环中延迟 20 毫秒的协程。
标签: android android-studio kotlin timer