OnRestoreInstanceState () no se llama cuando se espera

He tenido problemas últimamente con onSaveInstanceState() y onRestoreInstanceState() . Tengo varias actividades que utilizan estos métodos para guardar el estado en el caso de que son limpiados por el sistema. La mayoría de ellos funcionan, excepto uno, y no tengo ni idea de por qué.

Lo que sucede específicamente es esto:

  • Tengo mi emulador en ejecución, y las herramientas de desarrollo de herramientas para destroy() todas las actividades cuando ya no son visibles. (Para que pueda probar que guardar / restaurar están funcionando correctamente.)
  • La Actividad en cuestión se pone en marcha, y procedo a cambiar algo de su estado.
  • Comienzo una nueva actividad, la dejo funcionar por un momento, y después uso el botón de la parte posterior para ir a mi actividad anterior.
  • Al llegar de nuevo a la actividad en cuestión, noto que el estado predeterminado está de vuelta, por lo tanto, no tiene el estado que debería.

He notado que el onSaveInstanceState() se llama, onCreate() se llama, pero tiene un paquete nulo, y onRestoreInstanceState() nunca se llama.

¿Alguien ha visto esto antes?

La configuración de herramientas de desarrollo que está utilizando puede no tener el comportamiento que espera.

Si desea probar onSaveInstanceState() / onRestoreInstanceState() , lo más sencillo es cambiar la orientación ( <Ctrl>-<F11> ). De forma predeterminada, la actividad se destruye y se vuelve a crear, utilizando el estado de la instancia.

Creo que he descubierto la cuestión, y es con detalles que no he revelado en la pregunta original.

Una de las cosas que estoy guardando en mi paquete es bastante grande (un mapa de bits de 500×1000 píxeles). Cuando quité eso de mi paquete, todo fue ahorrado, el método onCreate () fue llamado con el paquete, y onRestoreInstanceState () fue llamado también.

Por lo tanto creo que hay un paquete de tamaño máximo que se puede guardar en onSaveInstanceState (), que no está documentado. (Por lo menos hasta donde puedo decir)

La explicación por la cual onRestoreInstanceState() no se llama (o más peciselly: cuando se llama) se da en el subproceso de otra pregunta: onSaveInstanceState () y onRestoreInstanceState ()

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