Sobes.tech
Junior

Čo je Handler v Android?

sobes.tech AI

Odpoveď od AI

Handler je mechanizmus na odosielanie a spracovanie objektov Message a Runnable z vlákna, ktoré vytvára Handler, do iného vlákna (alebo toho istého).

Umožňuje plánovať vykonanie kódu v určitom vlákne, aj keď ste v inom vlákne. Handler je spojený s Looper, ktorý spracováva frontu správ vo vlákne.

Hlavné komponenty:

  • Handler: Odosiela správy a úlohy, a ich spracováva v spojenom vlákne.
  • Looper: Spúšťa cyklus spracovania fronty správ pre určité vlákno. Každé vlákno môže mať iba jeden Looper, ale nie všetky vlákna ho majú predvolene (napríklad hlavné vlákno ho má).
  • MessageQueue: Fronta správ spojená s Looper.
  • Message/Runnable: Objekt, ktorý sa odosiela cez Handler na vykonanie.

Použitie:

  • Aktualizácia UI z ne-UI vlákna.
  • Plánovanie úloh so zdržaním alebo v určitom čase.
  • Odosielanie správ medzi vláknami.
// Príklad použitia Handlera na aktualizáciu UI z pozadia vlákna
Handler mainHandler = new Handler(Looper.getMainLooper()); // Získanie Handlera hlavného vlákna

new Thread(() -> {
    // Vykonanie dlhodobej operácie na pozadí
    String result = doBackgroundWork();

    // Odoslanie výsledku do hlavného vlákna na aktualizáciu UI
    mainHandler.post(() -> {
        // Tento kód bude vykonaný v hlavnom vlákne
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Simulácia dlhého práce
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Výsledok práce na pozadí";
}

private void updateTextView(String text) {
    // Aktualizácia UI prvku
    // someTextView.setText(text);
}