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 aHandlerThreadsegí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().