2012-09-17 14 views
6

Eventuali duplicati:
Difference between onCreate() and onStart()?
Android Activity Life Cycle - What are all these methods for?OnCreate() vs OnStart()

Qual è la differenza tra OnCreate e OnStart?

La mia comprensione è che OnCreate viene chiamato solo la prima volta che l'applicazione viene aperta e non viene mai richiamata. È vero? Qualcuno può per favore elaborare le proprie parole piuttosto che copiare e incollare una definizione? Grazie!

+0

http://developer.android.com/reference/android/app/Activity.html – sissonb

+0

http://stackoverflow.com/questions/8515936/ android-activity-life-cycle-what-are-all-these-methods-for – asteri

+0

"La mia comprensione è OnCreate è chiamata solo la prima volta che l'** applicazione ** è aperta". - Non confondere i termini "app", "applicazione" e "attività". Un'applicazione può ancora funzionare anche quando un 'Activity' è distrutto e, dopo la distruzione, un' Activity' sarà 'creato' di nuovo e quindi 'onCreate (...) 'sarà chiamato di nuovo indipendentemente dal fatto che altri componenti dell'applicazione siano ancora correndo o no. – Squonk

risposta

8

Finché il dispositivo non uccide l'attività, ad esempio a causa di risorse di sistema insufficienti, ogni volta che si esce dall'app e si torna indietro, viene chiamato onStart. Se tuttavia il processo di applicazione viene ucciso, quando si ritorna onCreate verrà chiamato di nuovo, poiché tutte le risorse saranno state rilasciate.

+0

Non tecnicamente vero, quando si dice "perdere focus", ciò può accadere quando appare un popup (finestra di dialogo). L'attività sarà ancora visibile e verrà semplicemente messa in pausa anziché interrotta. Quando il popup è chiuso, verrà ripristinata la 'Attività' sottostante. – Squonk

+1

Rimossa la parte del focus mancante. – DaveJohnston

0

Questo è forse meglio spiegato iniziando con le funzioni opposte: onDestroy e onStop.

onDestroy viene chiamato quando un'attività viene eliminata o chiusa. La prossima volta che viene aperto, viene chiamato onCreate.

onStop viene chiamato ogni volta che un'applicazione non è visibile e non è più visibile. Questo di solito è causato da una nuova attività creata sopra la vecchia. Quando l'attività diventa nuovamente visibile, viene chiamato onStart.

Il diagramma in questa pagina fa un ottimo lavoro di spiegare i vari stati un'attività può essere, insieme ai metodi di transizione rilevanti: http://developer.android.com/training/basics/activity-lifecycle/starting.html

6

La documentazione sul serio - non sto scherzando - ha a very, very pretty image che descrive come funziona il ciclo di vita Activity (come inizia, funziona e termina).

L'immagine, direttamente collegato here, dice sostanzialmente questo:

  • onCreate() viene chiamato quando viene creata la Activity; cioè, è lanciato o avviato. (Inoltre, questo si innesca quando viene cambiato l'orientamento.) Viene chiamato di nuovo quando il processo viene ucciso, quindi restituito a.
  • onStart() viene chiamato dopo onCreate() all'avvio. Inoltre, viene richiamato quando l'app viene rimandata dopo lo onStop() (e dopo onRestart()), che si verifica dopo che lo Activity non è più visibile (che è durante il periodo in cui "l'utente può visualizzare l'attività sullo schermo, sebbene potrebbe non essere in primo piano e interagire con l'utente ").

Il diagramma lo spiega onestamente meglio di quanto possa in meno di 1.000 parole.

+3

"onStop() viene chiamato seguendo onCreate() all'avvio." ... Lo modifico se fossi in te. ;) – Squonk

+0

Fantastico! Grazie mille Eric! Un'altra domanda per te però; Mi serve; setContentView (R.layout.activity); in OnStart? O è ridondante visto che ce l'ho già sul mio OnCreate? –

+0

@Squonk Perché? È assolutamente vero a meno che 'finish()' non venga chiamato prima della fine di 'onCreate()'. – Eric

0

Questo sito fornisce una rappresentazione grafica solida del ciclo di vita Android: http://developer.android.com/training/basics/activity-lifecycle/starting.html

onStart() è chiamato ogni volta che l'applicazione diventa visibile. Ciò include quando l'applicazione viene creata per la prima volta e quando viene riportata sullo schermo senza essere terminata.Questo secondo comportamento si verifica quando un utente passa da un'applicazione all'altra e l'app è in background. Quando l'applicazione diventa invisibile, viene chiamato onStop(), ma quando l'applicazione viene completamente "distrutta", viene chiamato onDestroy(). Dopo una chiamata onDestroy(), l'applicazione deve essere creata nuovamente all'inizio del ciclo di vita.

È importante notare che onStart() non viene chiamato dopo che l'applicazione semplicemente perde l'attenzione a causa di qualcosa come una finestra di dialogo. In tali situazioni, onPause() viene chiamato seguito da onResume() quando viene ripristinata la messa a fuoco

1

Quasi. onCreate viene solitamente chiamato all'avvio dell'app, ma può anche essere chiamato se l'attività viene distrutta/rilasciata per altri motivi. In sostanza, se si desidera eseguire una sola volta l'impostazione per l'attività, è necessario eseguire l'override di onCreate. Se vuoi fare qualcosa ogni volta che l'utente naviga verso l'attività, devi eseguire l'override di onStart. Se vuoi fare qualcosa ogni volta che l'attività diventa visibile/attiva, usa onResume. Se si desidera eseguire una configurazione unica per l'intera app, vale a dire solo una volta SEMPRE, è necessario utilizzare onCreate, ma controllare se è stata eseguita la configurazione e farlo solo se non lo si è fatto.

Partenza il diagramma molto utile in questa pagina: Activity reference

Problemi correlati