Sobes.tech
Middle

Ce este Looper în Android?

sobes.tech AI

Răspuns de la AI

Looper este un obiect conceput pentru a executa o sarcină de mai multe ori într-un singur thread. Creează un ciclu de evenimente care procesează mesajele din coada de mesaje (MessageQueue).

Componente principale:

  • MessageQueue: Coada de sarcini sau mesaje.
  • Looper: Obiect care extrage mesajele din MessageQueue și le trimite către Handler-ul corespunzător.
  • Handler: Obiect asociat cu un anumit Thread și MessageQueue. Este folosit pentru a trimite mesaje în MessageQueue și pentru a le procesa.

Principiul de funcționare:

  1. Thread-ul care dorește să utilizeze Looper apelează Looper.prepare() pentru a crea un Looper și o MessageQueue.
  2. Thread-ul apelează Looper.loop() pentru a porni ciclul de procesare a mesajelor. Această funcție blochează thread-ul până când se apelează Looper.quit().
  3. Handler-ul creează și trimite mesaje în MessageQueue, legate de acest Looper.
  4. Looper extrage mesajele din MessageQueue în ordine și le trimite înapoi către Handler pentru procesare în metoda handleMessage().

Aplicații:

  • Thread-urile de interfață utilizator (UI Thread) din Android folosesc Looper pentru a gestiona evenimente precum clicuri și atingeri fără a bloca UI-ul.
  • Thread-urile de fundal pot folosi Looper pentru a executa sarcini repetitive sau pentru a procesa mesajele trimise de alte thread-uri.
// Exemplu de creare și pornire a unui Looper într-un thread de fundal
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Creăm un Looper și o MessageQueue pentru acest thread
        handler = new Handler(Looper.myLooper()) { // Creăm un Handler
            @Override
            public void handleMessage(Message msg) {
                // Procesăm mesajul aici
            }
        };
        Looper.loop(); // Pornim ciclul de procesare a mesajelor
    }
}