Passa ai contenuti principali

Android Studio - Ciclo di vita di una Activity

In questo articolo vedremo il ciclo di vita di una Activity, cioè da quando l'app o meglio dire, un'Activity, viene caricata fino a quando viene chiusa.

Maggiori informazioni si possono trovare a questo indirizzo (in inglese)

La classe Activity fornisce una serie di chiamate a determinate funzioni che consentono all'Activity stessa di sapere che uno stato è cambiato: che il sistema sta creando, arrestando o riprendendo un'Activity o sta distruggendo il processo in cui risiede l'Activity.
All'interno delle funzioni, si può dichiarare come si comporta l'Activity quando l'utente esce e rientra. Ogni chiamata ad una funzione consente di eseguire lavori specifici appropriati per un determinato cambio di stato. Fare il lavoro giusto al momento giusto e gestire correttamente le transizioni rende l'app più solida e performante.

La classe Activity fornisce un set di base di sette funzioni: L'immagine qui sotto è una rappresentazione visiva di questo ciclo.
onCreate()
È necessario implementare questa funzione, che si attiva quando il sistema crea l' Activity. Infatti ogni progetto che si crea avrà già questa funzione da andare a riempire con il proprio codice.
Questa funzione dovrebbe inizializzare i componenti essenziali dell'Activity: ad esempio, creare viste e associare i dati alle variabili.
Ancora più importante, è qui che è necessario chiamare setContentView() per definire il layout dell'interfaccia utente.

Al termine di onCreate(), la funzione che viene chiamata successivamente è sempre onStart().


onStart()
All'uscita dalla funzione onCreate(), l'Activity entra nello stato avviato e l'Activity diventa visibile all'utente. Questa funzione contiene ciò che equivale ai preparativi finali dell'Activity per venire in primo piano e diventare interattiva per l'utente.


onResume()
Il sistema richiama questa funzione appena prima che l'Activity inizi a interagire con l'utente. A questo punto, l'Activity si trova in primo piano e acquisisce tutti gli input dell'utente. La maggior parte delle funzionalità principali di un'app è implementata nella funzione onResume().
Inoltre onResume() viene chiamata subito dopo onRestoreInstanceState() che è possibile approfondire in questo articolo.

Al termine di onResume(), la funzione che viene chiamata successivamente è sempre onPause().


onPause()
Il sistema chiama la funzione onPause() quando l'Activity perde lo stato attivo ed entra in uno stato di pausa. Questo stato si verifica quando, ad esempio, l'utente tocca il pulsante Indietro o App recenti.
Quando il sistema chiama onPause(), significa tecnicamente che l'Activity è ancora parzialmente visibile, ma il più delle volte indica che l'utente sta uscendo e l'Activity entrerà presto nello stato Interrotto o Ripreso.
Non utilizzare onPause() per salvare i dati dell'applicazione o dell'utente, effettuare chiamate di rete o eseguire transazioni di database ma utilizzare onRestoreInstanceState() che è possibile approfondire in questo articolo.

Al termine di onPause(), la funzione che viene chiamata successivamente è onStop() oppure onResume(), a seconda di cosa succede dopo che l'Activity entra nello di pausa.


onStop()
Il sistema chiama la funzione onStop() quando l'Activity non è più visibile all'utente. Ciò può accadere perché l'Activity viene distrutta, una nuova Activity viene inizializzata o un'Activity esistente sta entrando in uno stato Ripreso e sostituisce l'Activity interrotta. In tutti questi casi, l'Activity interrotta non è più visibile.

Al termine di onStop(), la funzione che viene chiamata successivamente è onRestart(), se l'Activity sta tornando a interagire con l'utente, oppure onDestroy() se l'Activity sta terminando completamente.


onDestroy()
Il sistema richiama questa funzione prima che un'Activity venga distrutta.
Questa funzione è quella finale che l'Activity riceve. onDestroy() viene in genere implementato per garantire che tutte le risorse di un'Activity vengano rilasciate quando l'Activity o il processo che la contiene viene distrutto.


onRestart()
Il sistema richiama questa funzione quando un'Activity in stato di arresto sta per riavviarsi.
onRestart() ripristina lo stato dell'Activity dal momento in cui è stata interrotta.

Al termine di onRestart(), la funzione che viene chiamata successivamente è sempre onStart().


Ecco come si presenta la classe MainActivity all'interno del file MainActivity.kt
Vediamo un esempio pratico per capire come e quando vengono richiamate queste funzioni
Ecco come si presenta il file MainActivity.kt Ecco un video dimostrativo

La prima volta che l'app viene eseguita appariranno i seguenti Toast message:
  • onCreate()
  • onStart ()
  • onResume ()
Dopo aver premuto il tasto Home, appariranno i seguenti Toast message:
  • onPause()
  • onStop()
Quando si riavvia di nuovo l'app, appariranno i seguenti Toast message:
  • onRestart()
  • onStart()
  • onResume()
Quando si esce dall'app, appariranno i seguenti Toast message:
  • onPause()
  • onStop()
  • onDestroy()
Quando si orienta lo schermo oppure una qualsiasi configurazione cambia, appariranno i seguenti Toast message:
  • onPause()
  • onStop()
  • onDestroy()
  • onCreate()
  • onStart()
  • onResume()

Download Project
Download file APK
Visualizza su


Per maggiori dettagli vedere questo articolo su come risolvere il problema del riavvio dell'app quando si orienta lo schermo.

Commenti

Post popolari in questo blog

Arduino - Lampeggio Led (delay vs. millis)

Cosa sono delay() e millis()? Delay() è una funzione che mette in pausa il programma per un determinato tempo espresso in millisecondi, così facendo viene interrotta l'esecuzione del programma e se abbiamo un dispositivo in ingresso che durante il tempo di pausa cambia di stato il programma non se ne accorge fino a quando non ricomincia l'esecuzione dall'inizio. La struttura di delay è: delay(1000);   da inserire nel punto dello sketch in qui si vuole interrompere il programma in questo modo il programma viene messo in pausa per 1000 millisecondi = 1 secondo. Per saperne di più Millis() è una funzione che permette di sapere da quanto tempo è in funzione il microprocessore di Arduino UNO. In questo modo il programma non andrà mai in pausa ed è sempre in esecuzione, perché millis memorizza il tempo trascorso dall'avvio e poi per eseguire una determinata funzione si fa un controllo del tempo iniziale e il tempo trascorso. Per saperne di più Vediamo un esempi

Arduino - Utilizzo potenziometro e display LCD

Leggere il valore di un poteziometro (parte 1) Il potenziometro è un componente molto utilizzato in elettronica in quanto il suo uso permette di regolare una tensione variabile (in questo caso 0 - 5 Volt) in ingresso al microcontrollore. Il potenziometro va collegato secondo lo schema qui sotto al pin analogico A0 di Arduino.

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.