Android Looper è una classe Java all’interno dell’interfaccia utente Android che, insieme alla classe Handler, elabora eventi dell’interfaccia utente come clic di pulsanti, ridisegno dello schermo e interruttori di orientamento. Possono anche essere utilizzati per caricare contenuti su un servizio HTTP, ridimensionare le immagini ed eseguire richieste remote. La capacità chiave di queste classi è la capacità di implementare un modello di concorrenza.
Scopo
Android impedisce ai programmatori di aggiornare i componenti dell’interfaccia utente dalla maggior parte dei thread, ad eccezione del thread principale. Utilizzando Android Looper e Android Handler, è possibile creare un thread separato che aggiorna l’interfaccia utente. Il processo prevede la creazione di una classe Handler associata al thread principale e quindi il collegamento di un comando eseguibile ad esso. Il comando viene quindi implementato successivamente tramite il Looper.
Android Looper
La classe Android Looper contiene un MessageQueue ed è associata solo al thread da cui è stata creata. Nota che questa connessione non può essere interrotta e che il Looper non può essere collegato a nessun altro thread. Inoltre, il Looper si trova nella memoria locale e può essere chiamato solo da un metodo statico. Un metodo di preparazione controlla se un Looper è già associato a un thread e quindi il metodo statico crea il Looper. Successivamente, è possibile utilizzare un ciclo per verificare la presenza di messaggi nella coda.
Gestore Android
La classe Android Handler si occupa di aggiungere, rimuovere e aggiornare i messaggi all’interno di un determinato MessageQueue. I gestori sono collegati ai looper e ai thread associati, ma più gestori possono essere collegati a un singolo thread. Ogni volta che i metodi vengono passati al gestore, viene visualizzato un nuovo messaggio in MessageQueue. Il campo di destinazione del messaggio è configurato per l’istanza del gestore, quindi quando il Looper elabora il messaggio, instrada il messaggio direttamente al gestore, consentendo così l’elaborazione dell’evento sul thread appropriato.
Informazioni aggiuntive
Android Looper contiene 11 metodi, inclusi void, getMainLooper, getThread, loop, myLooper, myQueue, prepare, prepareMainLooper, quit, setMessageLogging e toString. Il vantaggio dell’utilizzo delle classi Android Looper e Android Handler è che impediscono agli sviluppatori di dover bloccare l’accesso ai componenti dell’interfaccia utente a causa della preoccupazione dell’accesso simultaneo, ovvero un utente che fa clic su un pulsante durante l’aggiornamento.