Sobes.tech
Junior — Middle

Hogyan határozhatjuk meg a megfelelő Loopert a Handlerrel való használathoz háttér- és fő szálak közötti adatcsere esetén?

sobes.tech MI

Válasz az MI-től

Androidben a Handler a Looper-hez kapcsolódik, amely egy adott szál üzenetsorát kezeli. Az adatok cseréjéhez háttér- és fő szál között a megfelelő Looper-t kell használni:

  • A fő (UI) szálhoz a Looper.getMainLooper()-t használjuk.
  • Háttérszál esetén saját Looper-t hozhatunk létre a HandlerThread segítségével.

Példa:

// Üzenetek küldése a fő szálhoz
Handler mainHandler = new Handler(Looper.getMainLooper());

// Háttérszálhoz HandlerThread-et hozunk létre
HandlerThread handlerThread = new HandlerThread("MyBackgroundThread");
handlerThread.start();
Handler backgroundHandler = new Handler(handlerThread.getLooper());

// A UI frissítéséhez a mainHandler.post(...) használata
// Háttérben végrehajtandó feladatokhoz a backgroundHandler.post(...) használata

Így a megfelelő Looper kiválasztása a kód futtatandó szálától függően történik: UI-hoz — Looper.getMainLooper(), háttérhez — HandlerThread.getLooper().