Sobes.tech
Junior — Middle

O thread principal pode fazer solicitações de rede sem causar bloqueios ou problemas de desempenho?

sobes.tech IA

Resposta da IA

No Android, o thread principal (UI) não deve fazer solicitações de rede diretamente, pois isso causa bloqueios na interface e prejudica o desempenho do aplicativo. Operações de rede podem levar um tempo considerável, e se forem feitas no thread principal, o aplicativo deixará de responder às ações do usuário.

Para evitar bloqueios, usam-se:

  • Tarefas assíncronas (AsyncTask, embora agora obsoletas)
  • Threads (Thread, HandlerThread)
  • Bibliotecas com suporte à assíncronia (por exemplo, Retrofit com Coroutines)
  • Kotlin Coroutines ou RxJava

Exemplo com Kotlin Coroutines:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Executar requisição de rede em segundo plano
        fetchDataFromNetwork()
    }
    // Atualizar a UI com o resultado
    updateUI(result)
}

Dessa forma, o thread principal não é bloqueado e o aplicativo permanece responsivo.