No necesita almacenar las preferencias del usuario en onPause porque, como usted dice, el marco hace eso por usted.
Para distinguir entre datos persistentes vs información de estado, piense en una aplicación de editor de texto.
datos persistentes
Digamos que el usuario ha escrito un par de palabras y luego sale de la aplicación. El usuario no nos dijo explícitamente que guardemos esos datos en un archivo, pero sería bueno guardar esos datos para cuando vuelvan. Se trata de datos persistentes y desea almacenarlos en onPause().
datos de estado
Del mismo modo, supongamos que tiene 2 pestañas y una variable que rastrea la ficha que se encuentra actualmente seleccionado. Esto es información de estado que almacenarías en SaveInstanceState().
materia gris
Finalmente imagina que tienes una clase en el editor que realiza un seguimiento del número de caracteres y el número de líneas en el editor. Esto es información de estado, puede almacenarlo en SaveInstanceState() o puede tirarlo y simplemente recalcularlo cuando vuelva a arrancar. Si lo descarta puede depender de cuánto tiempo lleva calcular, por ejemplo, si puede evitar una solicitud de red almacenando datos, hágalo.
pensamientos adicionales
jugando con su aplicación debería ser obvio si hay un área donde usted no pudo ardilla los datos de inmediato. Asegúrate de hacer cosas como presionar el botón de inicio y luego cerrar la aplicación desde el administrador del dispositivo. Esto le permitirá acceder a los casos de esquina donde se cierra su aplicación en lugar de detenerse.
Si su estado de IU es constante en todos los eventos del ciclo de vida y sus datos de usuario permanecen, buen trabajo.
Editar comentario basado en
Creo que hay 2 piezas de criterios aquí para determinar cuándo/qué guardar.
La primera es bastante subjetiva - ¿Desea guardar los datos en absoluto? Realmente no hay nada que te obligue a guardar el estado o los datos. ¿Guardar esta información mejorará la experiencia del usuario? Si está escribiendo un correo electrónico y tratando de copiar/pegar texto desde otra aplicación, perder su correo electrónico medio escrito cada vez que se cierre la aplicación sería frustrante.
La segunda pieza, que determina qué guardar, depende de si puede reconstruir su estado de UI basándose en los datos que tiene. Por ejemplo, si ha guardado datos de texto, eso debe significar que el usuario estaba editando texto. Entonces ahora sabemos cambiar a la pestaña de edición de texto y completar el texto guardado.
En general, si lo que desea es devolver al usuario al mismo lugar donde lo dejó, entonces debe pensar en los datos de estado necesarios para volver a ese punto. Imagínese una versión prístina cargado de su aplicación
- qué datos tiene que cambiar a su vez que en el último estado del usuario sierra?
- ¿qué datos necesita almacenar para volver aquí?
Así es como funciona Android, tu actividad se destruye y vuelve a crear y es tu trabajo volver a poner las piezas en movimiento (si decides hacerlo).
"Excepto cambios en la configuración del dispositivo" ... ¿qué significa eso? –
Esto está relacionado con los cambios del tipo de orientación. –
@AlexLockwood La palabra "Excepto" es un enlace a lo que significa. El ejemplo casi aburrido es el tipo de orientación cambia, pero puede ser algo más? (por ejemplo, teclado USB conectado, conectividad a Internet establecida, etc.) – ateiob