Sobes.tech
Junior

Šta je Handler u Androidu?

sobes.tech АИ

Одговор од АИ

Handler u Androidu je mehanizam za komunikaciju između niti. Omogućava slanje i obradu Message i Runnable iz jedne niti u red poruka (MessageQueue) druge niti (obično UI niti).

Glavne komponente:

  • Handler: Objekat povezan sa određenom niti i njenom MessageQueue. Šalje poruke i Runnable u red i obrađuje ih izvlačenjem.
  • Looper: Objekat povezan sa nitima. "Pokreće" nit, stalno izvlačeći zadatke (Message ili Runnable) iz MessageQueue i prosleđujući ih odgovarajućem Handleru na obradu.
  • MessageQueue: Red zadataka (Message ili Runnable) koji čekaju na obradu od strane Looper-a.

Kako funkcioniše:

  1. Handler se kreira u niti koja će obrađivati poruke (npr. UI nit).
  2. Ovaj Handler je povezan sa Looper-om te niti i njenom MessageQueue.
  3. Iz druge niti (npr. u pozadini) mogu se slati poruke ili Runnable u MessageQueue putem metoda Handler-a (npr., post ili sendMessage).
  4. Looper primajuće niti izvlači zadatke iz MessageQueue.
  5. Looper prosleđuje svaki zadatak odgovarajućem Handleru na obradu.

Primer upotrebe za ažuriranje UI iz pozadinskog niti:

// Kreiranje Handler-a u UI niti
Handler uiHandler = new Handler(Looper.getMainLooper());

// U pozadinskoj niti:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Izvršavanje dugotrajne operacije...

        // Ažuriranje UI putem Handler-a
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Kod koji sigurno ažurira UI
                textView.setText("Operacija završena!");
            }
        });
    }
}).start();

Handler se koristi za sigurno izvršavanje operacija u određenoj niti (češće UI) bez blokiranja glavne niti. Ovo je neophodno jer većina operacija sa UI-jem treba da se izvršava samo u glavnoj niti.