gpt4 book ai didi

android - Timer() fixedRateTimer 设置为 20 秒不会在触发 onStop 时停止

转载 作者:行者123 更新时间:2023-11-29 22:41:06 25 4
gpt4 key购买 nike

我有一个计时器设置为在 Activity 处于 Activity 状态时每 20 秒记录一次时间戳。它正确地注册了时间,但是当我的 Activity 的 onStop 方法被触发时,它会继续运行。我已确认触发了 onStop,但计时器会一直持续下去。这是我的 Activity 中的内容:

private lateinit var timer: Timer


override fun onStart() {
super.onStart()
checkForUpdates(true)
}

override fun onStop() {
super.onStop()
println("super.onStop triggered")
checkForUpdates(false)
timer.cancel()
timer.purge()
}

private fun checkForUpdates(daemonIsTrue: Boolean) {
timer = fixedRateTimer("default", daemonIsTrue, 0L, 20000) {
Coroutines.io {
val dateStamp = DateTime(DateTimeZone.UTC).toString("YYYY-MM-dd HH:mm:ss")
println("dateStamp at $dateStamp")
}
}
}
}

这是我的协程扩展,以防万一:

object Coroutines{
fun io(work: suspend (() -> Unit)) =
CoroutineScope(Dispatchers.IO).launch {
work()
}
}

谁能帮我弄清楚如何正确停止这个计时器?

最佳答案

您正在通过两次 checkForUpdates() 调用创建两个 Timer 对象,并且您只取消了第二个。或许可以去掉 onStop() 中的 checkForUpdates() 调用。

关于android - Timer() fixedRateTimer 设置为 20 秒不会在触发 onStop 时停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59009893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com