Recientemente, cuando estaba en una entrevista para un trabajo en una empresa importante, me preguntaron sobre el ciclo de vida de la Actividad. El entrevistador preguntó enfáticamente onSaveInstanceState
si la llamada fue antes o después de onStop. En ese momento estaba un poco confundido y no había pagado. Atención a si fue antes o después de onStop. .
¿Pero importa cuándo se llama a este método? Simplemente lo usamos para guardar datos y luego onRestoreInstanceState
restaurarlos.
Independientemente de si es importante o no, como el entrevistador preguntó al respecto y tú no lo sabes, ve y verifícalo.
Más tarde, el autor escribió personalmente el código para verificarlo y descubrió que se llamaba después de onStop. Al mismo tiempo, también leí las respuestas de otras personas en línea y descubrí que muchos materiales se escribieron después de onPause y antes de onStop. ¿No es confiable que lo haya verificado personalmente?
Luego, el autor fue al sitio web oficial de Google para comprobar su descripción oficial y, después de leerlo, me sorprendió. ¡Resulta que hay mucho que aprender sobre este onSaveInstanceState
método!
Primero haz una captura de pantalla:
Se puede ver en la descripción oficial que este método se utiliza para guardar datos cuando el sistema elimina la Actividad. Podemos restaurar los datos cuando se restaura la Actividad o durante el ciclo de onCreate
vida onRestoreInstanceState
.
El punto clave es que el último párrafo de la descripción señala que si onSaveInstanceState
se llama, si la plataforma de destino de la aplicación es Android P (9), onSaveInstanceState
se llamará después de onStop. Si la plataforma de destino es anterior a Android 9, onSaveInstanceState
se llamará después de onStop. Se llamará antes de onStop y no se garantiza que sea onPause. Se llama antes o después.
Ahora finalmente sé por qué mi verificación fue después de onStop, pero mi perfil en línea decía que fue antes de onStop.
Entonces, onRestoreInstanceState
¿existen diferencias similares?
Dependiendo de la situación, este método se llama entre y, no hay diferencia de versión onStart
.onPostCreate