Sobes.tech
Middle

Šta je Looper u Androidu?

sobes.tech АИ

Одговор од АИ

Looper je klasa u Androidu koja se koristi za rad sa redom poruka (MessageQueue) u nitima. Ona povezuje nit sa redom poruka, omogućavajući joj da prima i obrađuje poruke iz tog reda.

Princip rada:

  1. Kreiranje Looper-a: U niti koja treba da ima red poruka, poziva se Looper.prepare().
  2. Pokretanje petlje: Poziva se Looper.loop(). Ovaj poziv blokira nit dok se Looper ne zaustavi. Unutar petlje, Looper kontinuirano izvlači poruke iz MessageQueue i šalje ih ciljanom Handler-u.
  3. Zaustavljanje Looper-a: Za završetak rada, poziva se Looper.quit() ili Looper.quitSafely().

Handler se koristi za slanje poruka u MessageQueue Looper-a i njihovu obradu u povezanoj niti. Primer upotrebe:

// U niti gde treba da bude Looper
new Thread(() -> {
    Looper.prepare(); // 1. Kreira se Looper i MessageQueue za ovu nit.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Kreira se Handler povezan sa Looper-om ove niti.
        @Override
        public void handleMessage(Message msg) {
            // Obrada poruke u ovoj niti
        }
    };
    Looper.loop(); // 3. Pokreće se petlja Looper za obradu poruka.
}).start();

// U drugoj niti, slanje poruke
handler.sendMessage(/* vaša poruka */);

Looper je neophodan da bi niti mogle da obrađuju asinhrone zadatke i komuniciraju između sebe, posebno pri radu sa UI niti (koja po defaultu ima Looper).