Sobes.tech
Middle

Ce este Looper în Android?

sobes.tech AI

Răspuns de la AI

Looper este o clasă în Android utilizată pentru a lucra cu coada de mesaje (MessageQueue) în fire de execuție. Leagă un fir de execuție de coada de mesaje, permițându-i să primească și să proceseze mesaje din această coadă.

Principiul de funcționare:

  1. Crearea unui Looper: În firul de execuție care trebuie să aibă o coadă de mesaje, se apelează Looper.prepare().
  2. Pornirea ciclului: Se apelează Looper.loop(). Această apelare blochează firul de execuție până când Looper este oprit. În interiorul ciclului, Looper extrage continuu mesaje din MessageQueue și le trimite către Handler țintă.
  3. Oprirea Looper-ului: Pentru a termina lucrul, se apelează Looper.quit() sau Looper.quitSafely().

Handler este folosit pentru a trimite mesaje în MessageQueue a Looper-ului și pentru a le procesa în firul asociat cu acest Looper. Exemplu de utilizare:

// În firul în care trebuie să fie Looper
new Thread(() -> {
    Looper.prepare(); // 1. Se creează un Looper și o MessageQueue pentru acest fir.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Se creează un Handler legat de Looper-ul acestui fir.
        @Override
        public void handleMessage(Message msg) {
            // Procesarea mesajului în acest fir
        }
    };
    Looper.loop(); // 3. Se pornește ciclul Looper pentru procesarea mesajelor.
}).start();

// În alt fir, trimiterea unui mesaj
handler.sendMessage(/* mesajul tău */);

Looper este necesar pentru ca firele de execuție să poată procesa sarcini asincrone și să interacționeze între ele, mai ales când se lucrează cu firul UI (care are implicit un Looper).