这个问题的其他情况都没有解决我的问题。我有一个片段出现在事务序列的末尾。它旨在在其中包含的CountDownTimer
倒计时时关闭该应用程序:
class TerminalFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onStart() {
super.onStart()
startOverButton.setOnClickListener {
returnToStart()
}
initUi()
startCountDown()
}
override fun onStop() {
super.onStop()
AppLog.i(TAG, "onStop()")
stopCountdown()
}
}
private fun startCountDown() {
terminalCountdown = object : CountDownTimer(5000, 1000) {
override fun onFinish() {
AppLog.i(TAG, "Terminal countdown finished")
(context as MainActivity).finish()
}
override fun onTick(millisUntilFinished: Long) {
}
}
.start()
}
private fun stopCountdown() {
AppLog.i(TAG, "stopCountDown() - Terminal countdown stopped")
terminalCountdown?.cancel()
terminalCountdown = null
}
private fun returnToStart() {
AppLog.i(TAG, "returnToStart()")
stopCountdown()
(context as MainActivity).restartFlow()
}
每当片段离开时,都会调用 stopCountDown()
,但有时它会以某种方式保留下来并从另一个Fragment中关闭应用程序。使用日志,我还发现有时似乎存在2个此倒数实例。如何确保在此片段之外永远不会进行倒计时?
答案 0 :(得分:0)
与Shrey Greg mentioned in a comment一样,每次我想重新启动CountdownTimer
时都在创建一个新实例。这丢失了对先前实例的引用,从而无法取消。