Sobes.tech
Junior

Qu'est-ce qu'un Handler dans Android?

sobes.tech IA

Réponse de l'IA

Handler est un mécanisme pour envoyer et traiter des objets Message et Runnable depuis un thread qui crée le Handler vers un autre thread (ou le même).

Il permet de planifier l'exécution de code dans un thread spécifique, même si vous êtes dans un autre thread. Handler est associé à Looper, qui gère la file d'attente des messages dans le thread.

Composants principaux :

  • Handler : Envoie des messages et des tâches, et les traite dans le thread associé.
  • Looper : Lance la boucle de traitement de la file d'attente des messages pour un thread donné. Chaque thread peut avoir un seul Looper, mais tous ne l'ont pas par défaut (par exemple, le thread principal l'a).
  • MessageQueue : File d'attente des messages associée à Looper.
  • Message/Runnable : Objets envoyés via Handler pour exécution.

Applications :

  • Mettre à jour l'interface utilisateur depuis un thread non-UI.
  • Planifier des tâches avec délai ou à un moment précis.
  • Envoyer des messages entre threads.
// Exemple d'utilisation de Handler pour mettre à jour l'UI depuis un thread en arrière-plan
Handler mainHandler = new Handler(Looper.getMainLooper()); // Obtenir le Handler du thread principal

new Thread(() -> {
    // Effectuer une opération longue en arrière-plan
    String result = doBackgroundWork();

    // Envoyer le résultat au thread principal pour mettre à jour l'UI
    mainHandler.post(() -> {
        // Ce code sera exécuté dans le thread principal
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Simulation d'un travail long
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Résultat du travail en arrière-plan";
}

private void updateTextView(String text) {
    // Mettre à jour l'élément UI
    // someTextView.setText(text);
}