Sobes.tech
Middle

Cos'è Looper in Android?

sobes.tech AI

Risposta dell'AI

Looper è una classe in Android utilizzata per lavorare con la coda dei messaggi (MessageQueue) nei thread. Collega un thread alla coda dei messaggi, permettendogli di ricevere e processare i messaggi da essa.

Principio di funzionamento:

  1. Creazione di Looper: Nel thread che deve avere una coda dei messaggi, si chiama Looper.prepare().
  2. Avvio del ciclo: Si chiama Looper.loop(). Questa chiamata blocca il thread finché il Looper non viene fermato. All'interno del ciclo, il Looper estrae continuamente i messaggi da MessageQueue e li invia all'Handler di destinazione.
  3. Fermare il Looper: Per terminare il lavoro, si chiama Looper.quit() o Looper.quitSafely().

Handler viene usato per inviare messaggi alla MessageQueue del Looper e processarli nel thread associato a questo Looper. Esempio di utilizzo:

// Nel thread in cui deve esserci il Looper
new Thread(() -> {
    Looper.prepare(); // 1. Creazione di un Looper e MessageQueue per questo thread.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Creazione di un Handler associato al Looper di questo thread.
        @Override
        public void handleMessage(Message msg) {
            // Elaborazione del messaggio in questo thread
        }
    };
    Looper.loop(); // 3. Avvio del ciclo del Looper per processare i messaggi.
}).start();

// In un altro thread, invio di un messaggio
handler.sendMessage(/* il tuo messaggio */);

Looper è necessario affinché i thread possano elaborare compiti asincroni e interagire tra loro, specialmente quando si lavora con il thread UI (che di default ha un Looper).