2012-09-17 33 views
6

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

¿Cuál es la diferencia entre OnCreate y OnStart?

Tengo entendido que OnCreate solo se llama la primera vez que se abre la aplicación y nunca se vuelve a llamar. ¿Es esto cierto? ¿Puede alguien elaborar con sus propias palabras en lugar de copiar y pegar una definición? ¡Gracias!

+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

"Mi comprensión es que OnCreate solo se llama la primera vez que se abre la ** aplicación **". - No confundas los términos 'aplicación', 'aplicación' y 'Actividad'. Una aplicación todavía se puede ejecutar incluso cuando se destruye una 'Activity' y, después de la destrucción, una' Activity' se 'volverá a crear' y, por lo tanto, 'onCreate (...)' se volverá a llamar independientemente de si todavía hay otros componentes de la aplicación corriendo o no. – Squonk

Respuesta

8

Siempre que su dispositivo no mate la actividad, por ejemplo debido a los bajos recursos del sistema, cada vez que abandone la aplicación y regrese, se invoca start. Sin embargo, si se cancela el proceso de solicitud, se volverá a llamar cuando regrese a Crear, ya que todos sus recursos se habrán liberado.

+0

No es técnicamente cierto, cuando dice "perder enfoque", esto puede suceder cuando aparece una ventana emergente (diálogo). La 'Actividad' seguirá siendo visible y simplemente se pausará en lugar de detenerse. Cuando se cierre la ventana emergente, se reanudará la 'Actividad' subyacente. – Squonk

+1

Se ha eliminado la parte de perder foco. – DaveJohnston

0

Esto se explica mejor comenzando con las funciones opuestas: onDestroy y onStop.

onDestroy se invoca cuando una actividad se elimina o se cierra. La próxima vez que se abre, se llama a onCreate.

onStop se invoca cada vez que una aplicación queda fuera de la vista y deja de estar visible. Esto generalmente es causado por una nueva actividad creada sobre la anterior. Cuando la actividad vuelve a ser visible, se invoca start.

El diagrama en esta página hace un muy buen trabajo de explicar los distintos estados de una actividad puede estar, junto con los métodos de transición pertinentes: http://developer.android.com/training/basics/activity-lifecycle/starting.html

6

La documentación serio - no es broma Yo'M - tiene a very, very pretty image que describe cómo funciona el ciclo de vida Activity (cómo comienza, funciona y termina).

La imagen, directamente vinculada here, básicamente dice lo siguiente:

  • onCreate() se llama cuando se crea el Activity; es decir, se inicia o inicia. (Además, esto se dispara cuando se cambia la orientación.) Se vuelve a llamar cuando se cancela el proceso y luego se devuelve a.
  • onStart() se llama siguiente onCreate() al inicio. Además, también se invoca cuando la aplicación vuelve a navegar después de onStop() (y después de onRestart()), que ocurre después de que Activity ya no está visible (que es durante el tiempo que "el usuario puede ver la actividad en pantalla, aunque puede no estar en primer plano e interactuando con el usuario ").

El diagrama lo explica honestamente mejor que yo en menos de 1000 palabras.

+3

"onStop() se llama siguiente onCreate() al inicio." ... Yo editaría eso si fuera usted. ;) – Squonk

+0

¡Impresionante! ¡Muchas gracias, Eric! Una pregunta más para ti; Lo necesito; setContentView (R.layout.activity); en el OnStart? ¿O eso es redundante ya que ya lo tengo en mi OnCreate? –

+0

@Squonk ¿Por qué? Es absolutamente cierto a menos que se llame a 'finish()' antes del final de 'onCreate()'. – Eric

0

Esta página web proporciona una representación gráfica del ciclo de vida sólido Android: http://developer.android.com/training/basics/activity-lifecycle/starting.html

onStart() se llama cada vez que la aplicación se hace visible. Esto incluye cuando la aplicación se crea por primera vez y cuando vuelve a aparecer en la pantalla sin que se finalice.Este segundo comportamiento se produce cuando un usuario cambia aplicaciones y la aplicación permanece en segundo plano. Cuando la aplicación se vuelve invisible, se llama al onStop(), pero cuando la aplicación se "destruye completamente", se llama al onDestroy(). Después de una llamada onDestroy(), la aplicación debe crearse nuevamente al comienzo del ciclo de vida.

Es importante tener en cuenta que onStart() no se invoca después de que la aplicación simplemente pierde el foco debido a algo así como un diálogo. En tales situaciones, se llama onPause() seguido de onResume() cuando se recupera el foco

1

Casi. onCreate generalmente se invoca cuando se inicia la aplicación, pero también se puede invocar si la Actividad se destruye/libera por otros motivos. Básicamente, si desea hacer una configuración de una vez para la actividad, debe reemplazar onCreate. Si desea hacer algo cada vez que el usuario navega hacia la actividad, debe anular el inicio. Si desea hacer algo cada vez que la Actividad se vuelva visible/activa, use onResume. Si desea realizar una configuración única para toda la aplicación, es decir, solo se ejecuta una vez SIEMPRE, debe usar onCreate, pero verifique si ha realizado esa configuración, y solo hágalo si no lo hizo.

Salida del diagrama muy útil en esta página: Activity reference

Cuestiones relacionadas