Sobes.tech
Junior

Šta je Handler u Androidu?

sobes.tech АИ

Одговор од АИ

Handler je mehanizam za slanje i obradu objekata Message i Runnable iz niti koja kreira Handler u drugu nit (ili istu).

Omogućava planiranje izvršavanja koda u određenoj niti, čak i ako ste u drugoj niti. Handler je povezan sa Looper, koji obrađuje red poruka u niti.

Glavne komponente:

  • Handler: Šalje poruke i zadatke, i obrađuje ih u povezanoj niti.
  • Looper: Pokreće ciklus obrade reda poruka za određenu nit. Svaka nit može imati samo jedan Looper, ali ne i sve niti ga imaju po defaultu (npr., glavna nit ga ima).
  • MessageQueue: Red poruka povezan sa Looper.
  • Message/Runnable: Objekti koji se šalju putem Handler za izvršenje.

Primene:

  • Ažuriranje UI iz non-UI niti.
  • Planiranje zadataka sa zakašnjenjem ili u određeno vreme.
  • Slanje poruka između niti.
// Primer korišćenja Handler-a za ažuriranje UI iz pozadinske niti
Handler mainHandler = new Handler(Looper.getMainLooper()); // Dobijanje Handler-a glavne niti

new Thread(() -> {
    // Izvršavanje duže operacije u pozadini
    String result = doBackgroundWork();

    // Slanje rezultata u glavnu nit za ažuriranje UI
    mainHandler.post(() -> {
        // Ovaj kod će biti izvršen u glavnoj niti
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Simulacija dužeg rada
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Rezultat rada u pozadini";
}

private void updateTextView(String text) {
    // Ažuriranje UI elementa
    // someTextView.setText(text);
}