Как повторно запустить таймер после его остановки?
Подскажите, как после остановки таймера timer.cancel() снова запустить его?
val timer = Timer()
Column {
Button(onClick = {
timer.cancel()
}) {
Text("Stop")
}
Button(onClick = {
myTimer(timer)
}) {
Text("Start")
}
}
fun myTimer(timer: Timer){
timer.schedule(delay = 0, period = 1000) {
println("Timer")
}
}
При таком коде у меня выходит ошибка:
Timer already cancelled.
Ответы (1 шт):
Автор решения: Vadik Sirekanyan
→ Ссылка
В документации к методу schedule сказано, что метод бросает IllegalStateException, если таймер был отменен. То есть повторно запустить таймер нельзя, создавайте новый объект таймера.
Например, это можно сделать так:
var timer by remember { mutableStateOf<Timer?>(null) }
Column {
Button(onClick = {
timer?.cancel()
timer = null
}) {
Text("Stop")
}
Button(onClick = {
if (timer == null) {
timer = scheduleTimer()
}
}) {
Text("Start")
}
}
Создание нового экземпляра Timer и его запуск:
fun scheduleTimer(): Timer {
val timer = Timer()
timer.schedule(delay = 0, period = 1000) {
println("Timer")
}
return timer
}