savedinstancestate practices created best activity android

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:

  1. comienza mi Activity .
  2. presione el botón "Inicio" en el teléfono. onSaveInstanceState() se llama.
  3. 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é?



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() :

  1. Presione la pantalla de inicio
  2. Mata la aplicación a través de adb
  3. Inicie su aplicación de nuevo

Siga estos pasos (usando Android Studio):

  1. Crear nuevo filtro Logcat, por ejemplo, AppState
  2. Inicie la aplicación en su emulador. Ya verás:

    I / AppState ﹕ onCreate

    I / AppState: onStart

    I / AppState ﹕ onResume

  3. 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.