Come abbiamo visto, una app Android può essere attiva in memoria in diverse condizioni che vengono chiamate stati e che non sempre sono conseguenza della scelta dell’utente.
Il passaggio da app attiva ad app ibernata per l’arrivo di una chiamata è un esempio classico di questo cambio di stato.
Per intercettare le variazioni di stato, all’interno della nostra app dovremo utilizzare i metodi collegati agli eventi che ci vengono messi a disposizione dalla classe di base Activity.
Il primo evento di una app è quello della sua creazione, che richiama il metodo collegato onCreate. Il metodo viene definito in questo modo:
protected void onCreate(android.os.Bundle savedInstanceState)
Il parametro savedInstanceState dirà al nostro codice se esiste uno stato precedente della attività. Se l’argomento è null, significa che non esiste uno stato precedentemente slavato e possiamo procedere alla esecuzione di operazioni che devono essere effettuate solo la prima volta all’avvio.
Un secondo metodo, che permette di recuperare dati precedentemente salvati o di effettuare controlli di coerenza dei dati salvati nel momento in cui una attività è stata arrestata è protected void onRestart().
Questo evento segnala che la attività sta per essere riavviata dopo essere stata interrotta. Se la app lavora con dati, è questo il momento di recuperarli.
Per preparare invece eventuali dati per la visualizzazione, come sfondi o grafica complessa, useremo il metodo onStart(), che ci dice che l’attività sta per essere visualizzata.
Il metodo onResume() viene invece richiamato quando la nostra attività sta per iniziare l’interazione con l’utente, mentre onPause() ci segnala che la attività non sta più interagendo con l’utente.
Il metodo che precede l’ibernazione è invece onStop(), che ci segnala che la nostra attività non è più proprietaria dello schermo, mentre onDestroy() segnala che la attività sta per essere terminata.
Ciascuno di questi metodi, che potremo richiamare dal nostro codice se ne abbiamo bisogno per eseguire particolari attività in seguito ad alcuni eventi, devono sempre contenere, come prima riga di codice, una chiamata al metodo corrispondente della classe di base.
protected void onStart() {
super.onStart();
//nostro codice….
}
< Lezione Precedente | Lezione Successiva >