Junior
Co je to Handler v Androidu?
sobes.tech AI
Odpověď od AI
Handler je mechanismus pro odesílání a zpracování objektů Message a Runnable z vlákna, které vytvoří Handler, do jiného vlákna (nebo do stejného).
Umožňuje plánovat vykonání kódu v konkrétním vlákně, i když se nacházíte v jiném vlákně. Handler je spojen s Looper, který zpracovává frontu zpráv ve vlákně.
Hlavní komponenty:
- Handler: Odesílá zprávy a úkoly, zpracovává je ve spojovaném vlákně.
- Looper: Spouští cyklus zpracování fronty zpráv pro dané vlákno. Každé vlákno může mít pouze jeden
Looper, ale ne všechna vlákna ho mají implicitně (například hlavní vlákno ho má). - MessageQueue: Fronta zpráv spojená s
Looper. - Message/Runnable: Objekty, které jsou odesílány přes
Handlerk vykonání.
Použití:
- Aktualizace UI z ne-UI vlákna.
- Plánování úkolů se zpožděním nebo v určitou dobu.
- Odesílání zpráv mezi vlákny.
// Příklad použití Handleru pro aktualizaci UI z pozadí vlákna
Handler mainHandler = new Handler(Looper.getMainLooper()); // Získání Handleru hlavního vlákna
new Thread(() -> {
// Provedení nějaké dlouhé operace na pozadí
String result = doBackgroundWork();
// Odeslání výsledku do hlavního vlákna pro aktualizaci UI
mainHandler.post(() -> {
// Tento kód bude spuštěn v hlavním vlákně
updateTextView(result);
});
}).start();
private String doBackgroundWork() {
// Simulace dlouhé práce
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Výsledek práce na pozadí";
}
private void updateTextView(String text) {
// Aktualizace UI prvku
// someTextView.setText(text);
}