Sobes.tech
Middle

Qu'est-ce que Looper dans Android?

sobes.tech IA

Réponse de l'IA

Looper est un objet conçu pour exécuter une tâche plusieurs fois dans un seul thread. Il crée une boucle d'événements qui traite les messages de la file de messages (MessageQueue).

Composants principaux:

  • MessageQueue : File de tâches ou de messages.
  • Looper : Objet qui extrait les messages de MessageQueue et les envoie au Handler correspondant.
  • Handler : Objet associé à un thread et à une MessageQueue spécifiques. Il est utilisé pour envoyer des messages à MessageQueue et les traiter.

Principe de fonctionnement:

  1. Le thread qui souhaite utiliser Looper appelle Looper.prepare() pour créer un Looper et une MessageQueue.
  2. Le thread appelle Looper.loop() pour démarrer la boucle de traitement des messages. Cette fonction bloque le thread jusqu'à ce que Looper.quit() soit appelé.
  3. Handler crée et envoie des messages à MessageQueue, liés à ce Looper.
  4. Looper extrait les messages de MessageQueue dans l'ordre et les renvoie au Handler pour traitement dans la méthode handleMessage().

Applications:

  • Les threads de l'interface utilisateur (UI Thread) dans Android utilisent Looper pour gérer des événements comme les clics et les touchers sans bloquer l'UI.
  • Les threads en arrière-plan peuvent utiliser Looper pour effectuer des tâches répétitives ou traiter des messages envoyés par d'autres threads.
// Exemple de création et de lancement de Looper dans un thread en arrière-plan
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Créons Looper et MessageQueue pour ce thread
        handler = new Handler(Looper.myLooper()) { // Créons Handler
            @Override
            public void handleMessage(Message msg) {
                // Traiter le message ici
            }
        };
        Looper.loop(); // Démarrons la boucle de traitement des messages
    }
}