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:
- Looper létrehozása: Az a szál, amelynek üzenetsorral kell rendelkeznie, meghívja a
Looper.prepare()-t. - A ciklus indítása: A
Looper.loop()-t hívják. Ez a hívás blokkolja a szálat, amíg aLoopernem áll le. A cikluson belül aLooperfolyamatosan kiveszi az üzeneteket aMessageQueue-ból, és elküldi a célHandler-nek. - A
Looperleállítása: A munka befejezéséhez aLooper.quit()vagy aLooper.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).