Y a-t-il une fonction d'attente dans Kotlin? (Je ne parle pas d'un calendrier, mais interrompe l'exécution). J'ai lu que vous pouvez utiliser Thread.sleep()
. Cependant, cela ne fonctionne pas pour moi, car la fonction est introuvable.
La veille du thread prend toujours un temps d'attente: https://docs.Oracle.com/javase/7/docs/api/Java/lang/Thread.html#sleep(long)
public static void sleep(long millis)
throws InterruptedException
par exemple.
Thread.sleep(1_000) // wait for 1 second
Si vous voulez attendre qu'un autre Thread vous réveille, peut-être que `Object # wait () 'serait mieux
https://docs.Oracle.com/javase/7/docs/api/Java/lang/Object.html#wait ()
public final void wait()
throws InterruptedException
Ensuite, un autre thread doit appeler yourObject#notifyAll()
par exemple . Thread1 et Thread2 partagent un Object o = new Object()
Thread1: o.wait() // sleeps until interrupted
Thread2: o.notifyAll() // wake up ALL waiting Threads of object o
S'il vous plaît essayez ceci, cela fonctionnera pour Android:
Handler().postDelayed(
{
// This method will be executed once the timer is over
},
1000 // value in milliseconds
)
Vous pouvez utiliser des éléments du JDK standard.
Une réponse précédente donne Thread.sleep(millis: Long)
. Personnellement, je préfère la classe TimeUnit (depuis Java 1.5) qui fournit une syntaxe plus complète.
TimeUnit.SECONDS.sleep(1L)
TimeUnit.MILLISECONDS.sleep(1000L)
TimeUnit.MICROSECONDS.sleep(1000000L)
Ils utilisent Thread.sleep
en-dessous de la scène et peuvent également générer une exception InterruptedException.
Vous pouvez y parvenir facilement avec les coroutines Kotlin
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
CoroutineScope(Dispatchers.IO).launch {
delay(TimeUnit.SECONDS.toMillis(3))
withContext(Dispatchers.Main) {
Log.i("TAG", "this will be called after 3 seconds")
finish()
}
}
Log.i("TAG", "this will be called immediately")
}
}
build.gradle (app)
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-Android:1.0.1'
}