Sobes.tech
Middle

Čo je to Looper v Androidu?

sobes.tech AI

Odpoveď od AI

Looper je objekt navrhnutý na opakované vykonávanie úlohy v jednom vlákne. Vytvára slučku udalostí, ktorá spracováva správy z fronty správ (MessageQueue).

Hlavné komponenty:

  • MessageQueue: Fronta úloh alebo správ.
  • Looper: Objekt, ktorý extrahuje správy z MessageQueue a odosiela ich príslušnému Handleru.
  • Handler: Objekt spojený s určitým vláknom a MessageQueue. Používa sa na odosielanie správ do MessageQueue a ich spracovanie.

Princíp fungovania:

  1. Vlákno, ktoré chce použiť Looper, volá Looper.prepare() na vytvorenie Looperu a MessageQueue.
  2. Vlákno volá Looper.loop() na spustenie slučky spracovania správ. Táto funkcia blokuje vlákno, kým nie je volané Looper.quit().
  3. Handler vytvára a odosiela správy do MessageQueue, ktoré sú s týmto Looperom spojené.
  4. Looper extrahuje správy z MessageQueue v poradí a vracia ich späť Handleru na spracovanie v metóde handleMessage().

Použitie:

  • Vlákna používateľského rozhrania (UI Thread) v Android používajú Looper na spracovanie udalostí ako kliknutia a dotyky bez blokovania UI.
  • Pozadie vlákna môžu použiť Looper na vykonávanie opakujúcich sa úloh alebo spracovanie správ odoslaných z iných vlákien.
// Príklad vytvorenia a spustenia Looper v pozadí vlákne
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Vytvoríme Looper a MessageQueue pre toto vlákno
        handler = new Handler(Looper.myLooper()) { // Vytvoríme Handler
            @Override
            public void handleMessage(Message msg) {
                // Spracovanie správy tu
            }
        };
        Looper.loop(); // Spustíme slučku spracovania správ
    }
}