Comment appeler une fonction après un retard dans Kotlin?
Que le titre, est-il possible d'appeler une fonction après un retard (1 seconde par exemple) dans Kotlin
?
Vous devez vous connecter pour publier un commentaire.
Que le titre, est-il possible d'appeler une fonction après un retard (1 seconde par exemple) dans Kotlin
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser L'annexe
exemple (merci @Nguyen Minh Binh - trouvé ici: http://jamie.mccrindle.org/2013/02/exploring-kotlin-standard-library-part-3.html)
Timer("SettingUp", false).schedule(500) { doSomething() }
kotlin.concurrent.schedule
, parce que Kotlin simplement se plaint d'une incompatibilité de signature, mais ensuite j'ai réalisé que je tente de faire passer pour un Int au lieu d'une Longue. Il a compilé après la correction que.Il y a aussi une option pour utiliser
Handler -> postDelayed
Vous devez importer les deux bibliothèques suivantes:
et après qui l'utilisent de cette façon:
De Nombreuses Façons
1. À l'aide de
Handler
classe2. À l'aide de
Timer
classePlus courte
Plus court
3. À l'aide de
Executors
classeTimer.schedule()
s'attend à unTimerTask
que c'est le premier argument.kotlin.concurrent.timerTask()
encapsule le lambda dans unTimerTask
instance. Voir ici: kotlinlang.org/api/latest/jvm/stdlib/kotlin.concurrent/...Timer
objet ne va pas être utilisé plus d'une fois, par exemple,Timer().schedule(timerTask { ... }, 3000)
. Plus Kotlin-friendly option est aussi disponible; voir jonguer de réponse.Vous pourriez
launch
une coroutine,delay
et ensuite appeler la fonction:Si vous êtes en dehors d'une classe ou d'un objet ajouter
GlobalScope
de laisser la coroutine à courir, sinon, il est recommandé de mettre en œuvre laCoroutineScope
dans les environs de la classe, ce qui permet d'annuler tous les coroutines sont associées à ce champ si nécessaire.Un exemple simple pour montrer un toast après 3 secondes :
Si vous êtes à la recherche pour les génériques d'utilisation, voici ma suggestion:
Créer une classe nommée comme
Run
:Et de l'utiliser comme ceci: