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

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main

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.

Android Studio - Impostare uno sfondo sfumato

In Android Studio è possibile creare uno sfondo sfumato senza dover creare una immagine apposta per questo scopo. Per fare questo occorre seguire questi semplici passaggi: Aprire la cartella res Cliccare con il tasto destro sulla cartella drawable Selezionare New Selezionare Drawable resource file Dare un nome al file ad esempio gradient_background Cliccare sul pulsante OK per confermare Una volta aperto il file gradient_background.xml inserire le seguenti righe di codice: Alla riga 6 inserire l'angolo che definisce la direzione della sfumatura (valori da 0 a 360) Alla riga 7 inserire il colore di partenza in formato esadecimale Alla riga 8 inserire il colore finale in formato esadecimale Per quanto riguarda i colori è possibile utilizzare il sito webgradients.com in modo da poter utilizzare le sfumature proposte o creare le proprie sfumature personalizzate. Una volta creato il file che definisce lo sfondo passare al layout ed impostare l'attibuto backgr