Appunti di Android: Activity
Questo articolo fa parte della collezione Appunti di Android, utili per il corso d'Informatica di Mobile Programming.

Appunti di Android: Activity

Gestire il ciclo di vita delle activities implementando i metodi di callback è cruciale per lo sviluppo di una applicazione robusta e flessibile.

Un’Activity può essere in tre stati:

  • Resumed: l’Activity è mostrata a schermo e gode del focus dell’utente (tale stato è chiamato anche running).
  • Paused: un’altra Activity è mostrata e ha il focus mentre quella in pausa è ancora visibile. In questo stato può essere chiusa dal sistema in casi di poca memoria disponibile.
  • Stopped: l’Activity è completamente oscurata da un’altra e può essere chiusa dal sistema nel caso servisse memoria.

Activity Lifecycle

Salvare lo stato di un’Activity

Quando un’Activity viene messa in pausa o fermata, lo stato viene conservato, ovvero l’istanza continua a risiedere nella memoria.

Quando il sistema distrugge l’Activity per recuperare memoria non si può ripristinarne lo stato e qualora l’utente ritorni sui suoi passi l’istanza dev’essere ricreata. L’utente, non sapendo che il sistema ha prima distrutto l’Activity e poi l’ha ricreata, si aspetta di ritrovarla così come l’aveva lasciata. In queste situazioni, le informazioni sullo stato dell’Activity vengono preservate implementando il callback method onSaveInstanceState().

Il sistema invoca questo metodo prima di rendere l’Activity passibile di distruzione. Come parametro abbiamo un Bundle, nel quale vengono salvate le informazioni sotto forma di coppie chiave-valore, usando metodi come putString() e putInt(). Quindi, il processo dell’applicazione termina e l’utente torna su quest’Activity, il sistema la ricrea e passa l’oggetto Bundle al metodo onCreate() e onRestoreInstanceState(). Da questi due metodi, si possono estrarre le informazioni sullo stato salvate precedentemente. Se non ci sono informazioni da ripristinare, il Bundle passato è null.

Back Stack

Le activities sono memorizzate in uno stack, ovvero il back stack, nell’ordine in cui sono state aperte. Quando l’Activity corrente dà via ad un’altra, la nuova viene inserita in cima allo stack e ottiene il focus. L’Activity precedente rimane nello stack, ma è ferma. Quando l’utente preme il pulsante back, l’Activity corrente viene rimossa dalla cima dello stack (e terminata) e l’Activity precedente riprende il focus. Questo stack opera quindi secondo il paradigma last in, first out.

26 November 2015