Avatar ·

Como chamar um método com atraso no Android (Java)

Olá a todos! Sou novo no desenvolvimento Android, programo em Java. Me deparei com a seguinte tarefa: preciso que, após clicar em um botão, uma mensagem Toast apareça na tela, mas não imediatamente, e sim após 3 segundos. Tentei usar Thread.sleep(3000) na UI thread, mas o aplicativo congela e o Toast não aparece. Li que não se deve fazer isso.\n\nAqui está meu código:\n\n```java\npublic void onClick(View v) {\n try {\n Thread.sleep(3000);\n } catch (InterruptedException e) {\n e.printStackTrace();\n }\n Toast.makeText(this, "Olá após 3 segundos!", Toast.LENGTH_SHORT).show();\n}\n```\n\nEntendo que Thread.sleep bloqueia a thread principal e a UI não é atualizada. Como implementar corretamente o atraso para que o aplicativo não congele? Vi menções sobre Handler e Timer, mas não entendo como aplicá-los corretamente neste cenário simples. Ficarei grato por um exemplo detalhado com explicação.\n<<>>\n

Usando Handler para execução atrasada

\n

O problema no seu código é o bloqueio