web-dev-qa-db-fra.com

Kotlin: appeler une fonction toutes les secondes

Je veux créer un compte à rebours simple pour mon jeu, lorsque le jeu démarre, je veux que cette fonction soit appelée à chaque seconde:

fun minusOneSecond(){
  if secondsLeft > 0{
     secondsLeft -= 1
     seconds_thegame.text = secondsLeft.toString()
  }
}

J'ai essayé ceci:

var secondsLeft = 15

timer.scheduleAtFixedRate(
   object : TimerTask() {

      override fun run() {
         minusOneSecond()
      }

    },0, 1000
)   // 1000 Millisecond  = 1 second

Mais l'application s'arrête malheureusement, la deuxième fois que la fonction d'exécution est appelée

Je viens de commencer avec Android et Kotlin il y a 3 semaines et jusqu'à présent, je comprends le mieux.

Avec Swift dans Xcode j'utilise cette ligne et je pensais que quelque chose de similaire fonctionnerait avec Kotlin

setTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(minusOneSecond), userInfo: nil, repeats: true)
9
Alex Karapanos

J'appelle ma fonction à chaque seconde comme ça

val handler = Handler()
  handler.postDelayed(object : Runnable {
      override fun run() {
            //Call your function here
            handler.postDelayed(this, 1000)//1 sec delay
        }
}, 0)
0
Aftab Alam