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:
- Kreiranje Looper-a: U niti koja treba da ima red poruka, poziva se
Looper.prepare(). - Pokretanje petlje: Poziva se
Looper.loop(). Ovaj poziv blokira nit dok seLooperne zaustavi. Unutar petlje,Looperkontinuirano izvlači poruke izMessageQueuei šalje ih ciljanomHandler-u. - Zaustavljanje Looper-a: Za završetak rada, poziva se
Looper.quit()iliLooper.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).