MICHELEPISANI.IT
 

Comprendere il flusso dei metodi invocati nella gestione di un'Activity

Il ciclo di vita di un'Activity in un'applicazione Android

Il ciclo di vita di un'Activity in un'applicazione Android
Novembre 23
07:222014

Comprendere il ciclo di vita di un'Activity è un passo fondamentale per poter programmare la logica della nostra applicazione. Un'Activity non è altro che la finestra contenente la parte visiva dell'applicazione e che, come normale che sia, in un sistema Android può essere avviata o meno, presente in primo piano, se si sta utilizzando l'app, o in background, nel caso sia stata aperta un'altra app e quella in esame non sia stata chiusa; ciò determina quello che si definisce lo stato dell'applicazione.
E' possibile intercettare i vari stati, anche se non sempre tutti possono essere necessari, in base agli eventi definiti dalla classe Activity, riepilogati in questo grafico che ne illustra il ciclo di vita:

Android - Ciclo di vita di un'Activity

Fig. 1 - Android - Ciclo di vita di un'Activity

Ciascuna chiamata agli eventi presenti nel flusso può essere descritta brevemente in questo modo:

onCreate(Bundle savedInstanceState) - Quando l'Activity viene lanciata la prima volta, il Bundle savedInstanceState ha lo scopo di riportare l'Activity allo stato dell'istanza precedent;

onStart() - Quando l'Activity sta per diventare visibile all'utente;

onResume() - Quando l'Activity inizia ad interagire con l'utente;

onPause() - Quando l'attuale Activity viene "ibernata" o meglio viene messa in pausa in favore, ad esempio, dell'apertura di un'altra Activity;

onStop() - Quando l'activity non è più visibile all'utente;

onRestart() - Quando l'Activity sta per essere riavviata dopo che è stata precedentemente arrestata, viene chiamato prima di onStart();

onDestroy() - Quando l'Activity sta per essere distrutta.


Abbiamo inoltre:

onSaveInstanceState(Bundle) - Al fine di salvare le informazioni sullo stato di un'Activity;

onRestoreInstanceState(Bundle) - Per ripristinare un'Activity ai valori salvati se presenti.


E' importante sapere che l'evento onDestroy() può essere invocato sia da parte dell'utente, quando chiude un'Activity, ma anche da parte del sistema operativo che, in alcuni casi, può distruggere le Activity in background per liberare memoria utile per processi che in quel determinato momento sono ritenuti più prioritari.

Di seguito un esempio dei metodi dichiarati all'interno di un'Activity:

import android.app.Activity;  
import android.os.Bundle;  
import android.util.Log;  
      
public class HelloWorldActivity extends Activity {  

    String tag = "test_ciclo_di_vita_activity"; 

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        Log.d(tag, "completo: onCreate");  
    }  
      
    public void onStart(){  
        super.onStart();  
        Log.d(tag, "visible: onStart");  
    }  
      
    public void onStop(){  
        super.onStart();  
        Log.d(tag, "visible: onStop");  
    }  
      
    public void onPause(){  
        super.onStart();  
        Log.d(tag, "invisible: onPause");  
    }  
      
    public void onResume(){  
        super.onStart();  
        Log.d(tag, "invisible: onResume");  
    }  
      
    public void onDestroy(){  
        super.onStart();  
        Log.d(tag, "completo: onDestroy");  
    }  
}


Provate a creare un nuovo progetto e lanciare il codice di cui sopra con emulatore o sul dispositivo in modalità debug.
E' possibile a questo punto effettuare vari test aprendo altre app e ritornando alla nostra senza averla chiusa in precedenza verificando così i vari passaggi di stato dalla schermata di Log.
Con queste informazioni il concetto sul flusso seguito da un'Activity, durante il suo ciclo di vita, dovrebbe essere chiaro e permettere così di programmare a 360 gradi rendendo l'app reattiva in base agli stati in cui si trova, o meglio, in cui può trovarsi.


Tags
Condividi

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

Scrivi un Commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Michele

Ciao domenico,
hai provato con

Michele

Ciao Luca,
hai provato a contattare l'assistenza di Facebook? Attualmente la via migliore …

domenico

ciao, puoi aiutarmi?

ho creato un form che tramite una chiamata mi restituisce una …

Luca

Peccato che fb abbia modificato tutto ed ora sembra non esserci alcun modo per accedere alle …