Avatar ·

Como chamar uma função com delay em Kotlin? (Android)

Olá! Sou novo em Kotlin e desenvolvimento Android. Estou escrevendo um aplicativo simples: um timer de contagem regressiva. Preciso que, após clicar no botão "Iniciar", após 5 segundos, alguma ação seja executada (por exemplo, exibir um Toast com a mensagem "Tempo esgotado!"). Tentei usar `Thread.sleep(5000)` dentro de uma coroutine, mas o aplicativo simplesmente congela por 5 segundos, e o Toast só aparece depois disso, e a interface não é atualizada. Aqui está meu código: ```kotlin fun startTimer() { GlobalScope.launch { Thread.sleep(5000) withContext(Dispatchers.Main) { Toast.makeText(this@MainActivity, "Tempo esgotado!", Toast.LENGTH_SHORT).show() } } } ``` O problema é que `Thread.sleep` bloqueia a thread, e isso está errado. Já ouvi falar sobre `Handler` e `Timer`, mas não entendo qual maneira é considerada moderna e correta em Kotlin para um delay simples. Por favor, me diga como implementar o delay corretamente, sem bloquear a UI e com código legível. Desde já, obrigado!