android - practices - public void oncreate bundle savedinstancestate
¿Por qué nunca se llama a onRestoreInstanceState()? (5)
Bueno, si se llama a onRestart()
, la pila de aplicaciones mantendrá el valor de las variables de instancia y, por lo tanto, no será necesario que las restaure.
onCreate()
método onCreate()
solo se onCreate()
cuando se llama a su Activity
onStop()
y el proceso se onStop()
.
Consulte el ciclo de vida de la Activity
Android Activity Cycle para una comprensión clara.
Es posible que desee comprobar si se llama al método onStop()
y si se onStop()
su proceso. No creo que su proceso se vea afectado por el escenario que ha descrito.
El método onRestoreInstanceState()
es muy complicado. No sé exactamente cuándo se llama, pero vi que se llamó una vez mientras cambiaba de Potrait a Landscape.
Estoy intentando guardar datos en mi actividad y luego restaurarlos. onSaveInstanceState()
datos en onSaveInstanceState()
y luego trato de restaurar los datos en onRestoreInstanceState()
.
Configuro el punto de interrupción, se onSaveInstanceState()
al método onSaveInstanceState()
. Pero onRestoreInstanceState()
o onCreate()
nunca lo hizo.
Aquí están mis pasos:
- comienza mi
Activity
. - presione el botón "Inicio" en el teléfono.
onSaveInstanceState()
se llama. - Haga clic en el icono en el iniciador y vuelva a iniciar mi
Activity
.
En este momento, solo se onRestart()
. Pero no en onRestoreInstanceState()
o onCreate()
.
¿Alguien sabe por qué?
Consulte el siguiente enlace para ver cómo probar onSaveInstanceState()
y onRestoreInstanceState()
en un dispositivo real o en el emulador.
Este método usa la configuración AlwaysFinish, que es más simple y más rápida que matar procesos. Este método también proporciona control de nivel de Activity
lugar de control de nivel de proceso:
De doc:
El sistema llama a RestoreInstanceState () solo si hay un estado guardado para restaurar.
He hecho una pregunta similar anteriormente here
Aquí hay algunos pasos para probar onRestoreInstanceState()
:
- Presione la pantalla de inicio
- Mata la aplicación a través de adb
- Inicie su aplicación de nuevo
Siga estos pasos (usando Android Studio):
- Crear nuevo filtro Logcat, por ejemplo, AppState
Inicie la aplicación en su emulador. Ya verás:
I / AppState ﹕ onCreate
I / AppState: onStart
I / AppState ﹕ onResume
Presione Ctl-F12 para girar el emulador. Ya verás:
I / StateChange ﹕ onPause
I / StateChange S onSaveInstanceState
I / StateChange S onStop
I / StateChange D onDestroy
I / StateChange ﹕ onCreate
I / StateChange ﹕ onStart
I / StateChange onRestoreInstanceState
I / StateChange ﹕ onResume
Esto provoca la destrucción y la recreación de la actividad haciendo un cambio de configuración en el dispositivo, como la rotación de vertical a horizontal.