¿Por qué onRestoreInstanceState () nunca se llama

Estoy intentando ahorrar datos en mi actividad y restaurarla. Ahorro datos en onSaveInstanceState() y luego intento restaurar los datos en onRestoreInstanceState() .

Configurar el punto de interrupción, el método onSaveInstanceState() get called. Pero onRestoreInstanceState() o onCreate() nunca lo hicieron.

Aquí están mis pasos:

  1. Comenzar mi Activity
  2. Presione el botón "Inicio" en el teléfono. onSaveInstanceState() se llama.
  3. Haga clic en el icono del lanzador y vuelva a iniciar mi Activity .

En este momento, sólo onRestart() se llama. Pero no onRestoreInstanceState() o onCreate() .

¿Alguien sabe por qué?

Bueno, si se llama onRestart() , el valor de las variables de instancia sería mantenido por la propia pila de aplicaciones y, por lo tanto, no es necesario restaurarlas.

onCreate() método onCreate() sólo se llama cuando onStop() su Activity se llama y el proceso se onStop() .

Consulte el Ciclo de vida de Activity la Activity Cycle de vida de la aplicación para obtener una comprensión clara.

Es posible que desee comprobar si se llama al método onStop() y si se onStop() el proceso. No creo que su proceso sea asesinado por el escenario que usted ha descrito.

El método onRestoreInstanceState() es muy complicado. No sé cuándo exactamente se llama pero vi que fue llamado una vez mientras cambiaba de Potrait a Landscape.

De doc:

El sistema llama aRestoreInstanceState () sólo si hay un estado guardado para restaurar.

He hecho una pregunta similar anteriormente aquí

He aquí algunos pasos para probar onRestoreInstanceState() :

  1. Presione la pantalla de inicio
  2. Eliminar la aplicación mediante adb
  3. Inicia tu aplicación de nuevo

Consulte el siguiente enlace para ver cómo probar onSaveInstanceState() y onRestoreInstanceState() en un dispositivo real o en el emulador.

Este método utiliza la configuración de AlwaysFinish, que es más simple y más rápido que matar procesos. Este método también proporciona control de nivel de Activity lugar de control de nivel de proceso:

http://bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/

Siga estos pasos (Uso de Android Studio):

  1. Crear nuevo filtro de 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: onSaveInstanceState

    I / EstadoCambiar: onStop

    I / StateChange: onDestroy

    I / StateChange: onCreate

    I / StateChange: onStart

    I / StateChange: onRestoreInstanceState

    I / StateChange: onResume

Esto causa la destrucción y recreación de la actividad haciendo un cambio de configuración en el dispositivo, como la rotación de retrato a paisaje.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.