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:
- Vlákno, ktoré chce použiť Looper, volá
Looper.prepare()na vytvorenie Looperu a MessageQueue. - 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(). - Handler vytvára a odosiela správy do MessageQueue, ktoré sú s týmto Looperom spojené.
- 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
}
}