2013-04-17 20 views
6

Quando apro un'attività, so che posso inizializzare la funzione onCreate.onCreate vs onResume/onRestart bevhaviour riguardante le variabili membro

Ma qual è il comportamento sulla funzione OnResume e onRestart? Quando vengono chiamate queste funzioni?

In particolare: Inizializzo una variabile membro locale nella funzione onCreate auiqring un riferimento a un oggetto globale. Ora, quando l'utente viene interrotto, ad esempio da una chiamata, l'attività può essere chiusa. Più tardi, quando l'utente torna alla mia vista, qual è lo stato della variabile già iniziata? Devo reinizializzare tutto nelle funzioni onResume/onRestart? Quindi quale sarebbe la differenza funzionale opposta a onCreate?

risposta

6
  • onCreate: attività lanciata per la prima volta. Qui è dove puoi inizializzare la tua roba.
  • onResume: l'utente ritorna all'attività dopo che un'altra attività è entrata in primo piano.()
  • onRestart: l'utente passa all'attività dopo che non è più visibile (onStop).

È possibile visualizzare il ciclo di vita completo su Activity documentation. Le tue attività verranno perse solo quando viene chiamato il numero onDestroy, ovvero quando le applicazioni con priorità più alta necessitano di memoria)

+0

Quindi onDestroy significa che l'app viene comunque uccisa e onCreate sarà chiamato la prossima volta che l'app deve riavviarsi, giusto? – Devolus

+1

Non necessariamente, "onDestroy" significa che l''Attività' viene distrutta, come quando si ritorna all'attività precedente con il pulsante Indietro, ma l'app è ancora in esecuzione. Ma sì, una volta che l'app viene uccisa (o il 'Activity' viene distrutto), la prossima volta che lo apri,' onCreate' verrà chiamato di nuovo. – ssantos

+1

Nota che OnResume verrà chiamato anche dopo OnCreate, secondo lo schema qui https://developer.android.com/guide/components/activities/activity-lifecycle.html#alc –

1

Supponiamo che un dialogo venga avviato dall'attività corrente, la finestra principale (Attività) andrà allo stato onPause. Una volta che si forza l'attività in background (Supponiamo di aver premuto il tasto home) L'attività passerà allo stato onPause.