Sobes.tech
Middle

Mi az a Looper az Androidban?

sobes.tech MI

Válasz az MI-től

A Looper az Androidban egy osztály, amelyet a MessageQueue-val való munkára használnak szálakon belül. Összekapcsolja egy szálat a MessageQueue-val, lehetővé téve számára, hogy fogadjon és feldolgozzon üzeneteket ebből a sorból.

Működési elv:

  1. Looper létrehozása: Az a szál, amelynek üzenetsorral kell rendelkeznie, meghívja a Looper.prepare()-t.
  2. A ciklus indítása: A Looper.loop()-t hívják. Ez a hívás blokkolja a szálat, amíg a Looper nem áll le. A cikluson belül a Looper folyamatosan kiveszi az üzeneteket a MessageQueue-ból, és elküldi a cél Handler-nek.
  3. A Looper leállítása: A munka befejezéséhez a Looper.quit() vagy a Looper.quitSafely() hívható.

A Handler arra szolgál, hogy üzeneteket küldjön a Looper MessageQueue-jába, és feldolgozza azokat a hozzá kapcsolt szálon. Használati példa:

// Abban a szálban, ahol a Looper-nek kell lennie
new Thread(() -> {
    Looper.prepare(); // 1. Looper és MessageQueue létrehozása ehhez a szálhoz.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Handler létrehozása, amely a szál Looper-hez van kötve.
        @Override
        public void handleMessage(Message msg) {
            // Üzenet feldolgozása ebben a szálban
        }
    };
    Looper.loop(); // 3. A Looper ciklusának indítása az üzenetek feldolgozásához.
}).start();

// Egy másik szálban üzenet küldése
handler.sendMessage(/* az üzeneted */);

A Looper szükséges ahhoz, hogy a szálak aszinkron feladatokat tudjanak feldolgozni és kommunikálni egymással, különösen a UI szálon való munkavégzés során (amely alapértelmezés szerint rendelkezik Looper-rel).