Sobes.tech
Junior — Middle

Le thread principal peut-il effectuer des requêtes réseau sans provoquer de blocages ou de problèmes de performance?

sobes.tech IA

Réponse de l'IA

Sur Android, le thread principal (UI) ne doit pas effectuer directement des requêtes réseau, car cela entraîne des blocages de l'interface et une dégradation des performances de l'application. Les opérations réseau peuvent prendre un temps considérable, et si elles sont effectuées sur le thread principal, l'application cessera de répondre aux actions de l'utilisateur.

Pour éviter ces blocages, on utilise :

  • Tâches asynchrones (AsyncTask, bien que désormais obsolètes)
  • Threads (Thread, HandlerThread)
  • Bibliothèques supportant l'asynchronie (par exemple, Retrofit avec Coroutines)
  • Kotlin Coroutines ou RxJava

Exemple avec Kotlin Coroutines :

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Exécuter la requête réseau en arrière-plan
        fetchDataFromNetwork()
    }
    // Mettre à jour l'UI avec le résultat
    updateUI(result)
}

Ainsi, le thread principal n'est pas bloqué et l'application reste réactive.