¿Ciclo de vida de la actividad?
Creo que mis ideas sobre el ciclo de vida de la actividad y los paquetes
Están un poco confundidos, ¿me pueden ayudar?
Supongamos que el usuario abre la actividad A desde la pantalla de inicio,
Actividad A "llama" la actividad B que llena la pantalla.
En este evento onSaveInstanceState()
se llama a la actividad A, luego onPause()
y onStop()
.
Dado que hay demasiadas aplicaciones en ejecución en el sistema,
Andorid decide matar la actividad de alojamiento del proceso.
- Android Fragment onCreateView vs. onActivityCreated
- ¿Cómo puedo conservar un objeto complejo a través de Reiniciar actividades?
- ¿Dónde deja "Force Stop" una Actividad en su ciclo de vida?
- Android Chronometer, retener el estado de tiempo (y seguir contando en segundo plano)
- Cómo distinguir si onDestroy será llamado después de onPause
Cuando el usuario regresa a la actividad A , onCreate () se llama a
Use el paquete (establecido durante la última llamada de onSaveInstaceStae ()) para restaurar el estado. Entonces onStart()
, onRestoreInsanceState()
Y onResume()
se llaman,
¿Estoy bien?
A continuación, supongamos que el usuario presiona la tecla de retroceso para salir de la actividad A
onPause()
, onStop()
y onDestory()
se llaman en secuencia en la actividad A (la llamada de onDestroy()
podría posponerse sin embargo) onSaveInsanceState()
no debería ser llamado en este escenario.
Cuando el usuario abre otra vez la actividad A , el paquete
Pasado a onCreate () es nulo, ¿verdad?
Ahora supongamos que el usuario gira la pantalla onSaveInsanceState()
, OnPause()
, OnStop()
, OnDestroy()
se llaman
Entonces onCreate()
con el paquete configurado por la última llamada a onSaveInsanceState()
,
Y luego onStart (), y onRestore (). ¿Estoy bien?
Mi conjetura es que:
Cuando el usuario crea un ativity, el paquete pasado a onCreate()
es siempre null y onRestoreState()
nunca se llama, pero cuando el sistema lo crea, por ejemplo, cuando mató la actividad debido a memoria baja o debido a un evento de rotación, El paquete que se pasa es el establecido por la última llamada de onSaveInstanceState ().
¿Es mi conjetura correcta?
Gracias y lo siento por mi pobre inglés.
PS: Creo que onRestoreInstanceState()
se pasa el mismo paquete se pasa onCreate()
pero el estado típicamente se restaura con onCreate()
.
- ¿Está bien actualizar fragmentos en lugar de crear nuevas instancias?
- Dagger 2 Guardar y restaurar el estado cuando se detiene la actividad
- Mantenga GridView al reanudar desde el modo de suspensión
- Confusión sobre el ciclo de vida de la actividad de Android
- Android: Duplicación de fragmentos al utilizar el Administrador de fragmentos de soporte
- Uso de onResume () para actualizar la actividad
- ¿Es necesario guardar singletons?
- ¿Por qué mi app de Android llama a Create () cuando el sueño inicia en mi vista pero no desde la pantalla de inicio?
Interesante pregunta – nunca pensé en ello.
Eche un vistazo a la documentación, onCreate()
y onSaveInstanceState()
.
Esto responde al menos a su pregunta de qué Bundle se suministrará a onCreate()
.
Desafortunadamente no existe una definición exacta de los eventos en los que se llama onSaveInstanceState()
, pero supongo que se llama por defecto en todas las situaciones relevantes (cualquiera que sea …), pero puede averiguar algunas situaciones (por ejemplo, girar la pantalla ) Poniendo Log.i () en LogCat.
OnRestoreInstanceState () se pasa el mismo paquete se pasa onCreate () es correcto, y el sistema reinicia la actividad por llamada onCreate () y también llamada onRestoreInstanceState (), el paquete será nulo si se obtiene de onCreate () cuando se inició la actividad por primera vez .
Dado que hay demasiadas aplicaciones que se ejecutan actualmente en el sistema, andorid decide matar la actividad de alojamiento de proceso A.
Esta es una situación muy común. Además, puedes emular esta acción con la opción de desarrolladores.
En este caso, cada actividad, que se trasladó al fondo, se destruirá automáticamente.
Acerca de Bundle en OnCreate.
Puedo obtener de mi memoria sólo dos casos cuando se llamará OnCreate con un paquete no nulo. Primero – descrito anteriormente. Segundo caso – rotación de la pantalla.
Cuando inicia la aplicación Android calles
- Crecer
- En el inicio
- En resumen
Después de eso permite hacer la rotación de la pantalla. Android llamará
- OnSaveInstanceState
- Una interrupción
- En la parada
- Destruir
- Crecer
- En el inicio
- OnRestoreInstanceState
- En resumen
Cuanta más información se puede encontrar sobre el tema acerca de la recreación
- Múltiples pistas estéreo de audio
- Cómo mantener las cookies de sesión HTTP en HttpContext entre las actividades en Android?