我正在尝试在 Kotlin Multiplatform Mobile 项目的共享代码中实现计时器功能。计时器应运行 n 秒,并且每隔一秒它应回调以更新 UI。此外,UI 中的按钮可以取消计时器。这不可避免地意味着我必须启动某种新线程,我的问题是哪种机制适合使用 - 工作者、协程或其他?
我尝试使用带有以下代码的协程,但在 iOS 上遇到 InvalidMutabilityException:
class Timer(val updateInterface: (Int) -> Unit) {
private var timer: Job? = null
fun start(seconds: Int) {
timer = CoroutineScope(EmptyCoroutineContext).launch {
repeat(seconds) {
updateInterface(it)
delay(1000)
}
updateInterface(seconds)
}
}
fun stop() {
timer?.cancel()
}
}
我确实知道 moko-time 库,但我觉得这应该是可能的,而不需要依赖,我想学习如何。