【发布时间】:2019-08-29 11:00:57
【问题描述】:
我想为我的游戏创建一个简单的倒计时,当游戏开始时我希望每秒调用一次这个函数:
fun minusOneSecond(){
if secondsLeft > 0{
secondsLeft -= 1
seconds_thegame.text = secondsLeft.toString()
}
}
我试过了:
var secondsLeft = 15
timer.scheduleAtFixedRate(
object : TimerTask() {
override fun run() {
minusOneSecond()
}
},0, 1000
) // 1000 Millisecond = 1 second
但不幸的是应用停止了,第二次调用 run 函数
我在 3 周前刚开始使用 android 开发和 Kotlin,到目前为止,我对它了解最多。
在 Xcode 中使用 swift 我使用了这一行,我认为 Kotlin 也可以使用类似的东西
setTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(minusOneSecond), userInfo: nil, repeats: true)
【问题讨论】:
-
runOnUiThread 是必要的,因为 UI 只能从 UI 线程进行操作,并且回调发生在临时后台线程中。
-
使用AsyncTask 怎么样?使用由循环组成的后台任务,等待一秒钟,然后更新进度。还有一个更新 UI 的 onProgressUpdate() 方法。