Я использую обработчик в качестве таймера следующим образом:
class TimerClass {
fun startTimer( handler : Handler ,
stuffToDo : () -> Unit ,
stopTimeInSeconds : Int ,
timePassed : Int ,
interval : Long){
handler.postDelayed( {
stuffToDo.invoke()
if (timePassed < stopTimeInSeconds){
startTimer(handler ,
stuffToDo ,
stopTimeInSeconds ,
timePassed + 1 ,
interval)
}
} , interval)
}}
, а затем использую его:
val time = TestClass()
time.startTimer(handler = Handler() ,
stuffToDo = { textView.text = "some new text" } ,
stopTimeInSeconds = 5 ,
timePassed = 0 ,
interval = 1000)
Итак, вы определяете метод в классе и предоставляете все зависимости (объекты)и вводя его, вы создаете операцию, которую хотите сделать, как лямбда-функцию.затем вызовите метод отложенного обработчика, и в обработчике, если критерий (оператор if) верен, вы будете вызывать сам метод рекурсивно с приращением (timePassed + 1).Теперь у вас есть рабочий таймер.