Sobes.tech
Junior — Middle

Como garantir que as operações sejam executadas de forma a não bloquear a interface do utilizador?

sobes.tech IA

Resposta da IA

Para que as operações não bloqueiem a interface do utilizador no Android, é necessário executá-las numa thread de fundo, não na thread principal (UI). Para isso, pode usar:

  • AsyncTask (obsoleto, mas ainda presente em código antigo)
  • HandlerThread ou Handler
  • ExecutorService
  • Corutinas Kotlin (método moderno e recomendado)
  • RxJava

Por exemplo, com corutinas, pode fazer assim:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Operação longa, por exemplo, uma requisição de rede
        fetchData()
    }
    // Atualização da UI com o resultado
    textView.text = result
}

Desta forma, o trabalho pesado é realizado numa thread de fundo (IO), e a atualização da interface ocorre na thread principal.