Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 9 di 97
  • livello avanzato
Indice lezioni

Il ciclo di vita di un'Activity

Osserviamo gli stati attraverso i quali stati passa una Activity durante la sua esistenza. Vediamo come gestirli e interfacciarci con l'ecosistema Android.
Osserviamo gli stati attraverso i quali stati passa una Activity durante la sua esistenza. Vediamo come gestirli e interfacciarci con l'ecosistema Android.
Link copiato negli appunti

Una delle più note illustrazioni della programmazione Android è questa:

Figura 1. Il ciclo di vita di un'activity in Android (click per ingrandire)Il ciclo di vita di un'activity in Android

La si può trovare sulla documentazione ufficiale, nelle pagine in cui viene spiegato il ciclo di vita di un'Activity. Con questa espressione si intende una catena di stati che l'Activity attraversa durante la sua vita. Buona parte di questi sono indotti dal sistema
operativo, che nel rispetto di un corretto utilizzo delle risorse gestisce l'Activity in base alle operazioni svolte dall'utente, decidendo eventualmente di distruggerla quando la considera un consumo inutile di memoria.

Nell'immagine, le fasi salienti della vita dell'Activity sono rappresentate con forme colorate e distinguono i momenti in cui l'Activity viene lanciata, quando è in fase di running (cioè quando l'utente la utilizza), fino alle circostanze che generano la sua rimozione.

I rettangoli grigi rappresentano dei metodi di callback, esposti dalla classe Activity, che il sistema chiamerà man mano che il ciclo di vita di questa componente progredisce. Il programmatore dovrà necessariamente capire bene a cosa ognuno di questi metodi serve ed implementarlo con il codice necessario: tutto ciò renderà la nostra applicazione un "buon cittadino" del sistema operativo.

Ad esempio, il primo metodo di callback che viene raffigurato è onCreate() ed è proprio l'onCreate di cui abbiamo fatto l'override nell'implementazione dell'Activity vista nei capitoli precedenti.

Quando un'activity va in esecuzione per interagire direttamente con l'utente vengono obbligatoriamente invocati tre metodi:

  • onCreate: l'activity viene creata. Il programmatore deve assegnare le configurazioni di base e definire quale sarà il layout dell'interfaccia;
  • onStart: l'activity diventa visibile. È il momento in cui si possono attivare funzionalità e servizi che devono offrire informazioni all'utente;
  • onResume: l'activity diventa la destinataria di tutti gli input dell'utente.

Android pone a riposo l'activity nel momento in cui l'utente sposta la sua attenzione su un'altra attività del sistema, ad esempio apre un'applicazione diversa, riceve una telefonata o semplicemente – anche nell'ambito della stessa applicazione - viene attivata un'altra Activity. Anche questo percorso, passa per tre metodi di callback:

  • onPause (l'inverso di onResume) notifica la cessata interazione dell'utente con l'activity;
  • onStop (contraltare di onStart) segna la fine della visibilità dell'activity;
  • onDestroy (contrapposto a onCreate) segna la distruzione dell'activity.

Nel seguito della guida verranno offerti casi pratici di utilizzo ma per il momento ci teniamo su una linea piuttosto teorica. Intanto si consideri che i metodi di callback sono concepiti a coppie (un metodo di avvio con un metodo di arresto: onCreate-onDestroy, onStart-onStop, onResume-onPause) e solitamente il lavoro fatto nel metodo di avvio - in termini di funzionalità attivate e risorse allocate – verrà annullato nel corrispondente metodo di arresto.

Un altro aspetto significativo della vita di un'Activity consiste nel salvataggio della cosiddetta view hierarchy ovvero lo stato dei componenti visuali presenti nell'interfaccia utente (testo nelle EditText, punto di scroll nelle liste di elementi e via dicendo). Questo viene fatto in automatico dal sistema, ma il programmatore può chiedere di salvare ulteriori dati inserendoli come elementi chiave/valore (dove la chiave sarà un valore univoco di riconoscimento) in un oggetto di classe Bundle. Nel metodo onSaveInstanceState, chiamato durante la messa in pausa dell'Activity, si può effettuare il salvataggio mentre in onRestoreInstanceState, invocato in fase di start dell'Activity, verrà consegnato il Bundle con i dati salvati nella sessione precedente, ed il programmatore avrà la possibilità di utilizzarli per ripristinare lo stato dell'Actvity.

La prima situazione che si mostrerà favorevole ad illustrare l'invocazione dei più importanti metodi di callback sarà l'uso degli Intent per passare da un'activity all'altra. Si tratta, in fin dei conti, di una pratica comunissima nella programmazione Android.

Ti consigliamo anche