Android – Ciclo de vida y guardar una pregunta de estado de instancia

Así que dentro de mi aplicación es un formulario para crear un nuevo usuario, con detalles relevantes e información sobre el usuario. No hay problemas, es lo que sucede cuando el usuario deja la actividad sin pulsar el botón de confirmación.

Esto es lo que quiero hacer:

  1. Si el usuario presiona el botón Atrás, intente guardar todos los datos en la base de datos e informar al usuario.
  2. Si la actividad se interrumpe (es decir, mediante una llamada telefónica), guarde todos los datos en una ubicación temporal, de modo que cuando la actividad vuelva a estar en la parte superior de la pila, nada parece haber cambiado (pero los datos todavía no se han guardado A la base de datos).
  3. Si la actividad se pierde por más recursos cuando se está en segundo plano, haga lo mismo que el punto 2 anterior (es decir, cuando la actividad se inicia de nuevo, parece que nada ha cambiado).
  4. Si se vuelve a iniciar la aplicación completa (haciendo clic de nuevo en el icono) y si hay datos temporales almacenados desde los puntos 2 ó 3 anteriores, vaya a la actividad "crear usuario" y muestre los datos como si no hubiera cambios.

Aquí es cómo estoy intentando actualmente hacerlo:

  • Utilice las onDestroy() y isFinishing() para encontrar cuándo se está matando la actividad, para cubrir el punto 1 anterior (para luego intentar guardar todos los datos).
  • Guarde todos los datos con onSaveInstanceState en un lote (para cubrir el punto 2 anterior)
  • ¿El bundle creado con onSaveInstanceState sobrevive a la actividad que se está matando por más recursos, por lo que cuando se recrea el estado anterior se puede recuperar (como en el punto 3 anterior)?
  • No tengo idea de cómo implementar el punto 4.

Cualquier ayuda sería apreciada masivamente.

¡Aclamaciones!

Estoy corto de tiempo por lo que no puede dar una respuesta detallada completa, pero en breve, aquí están mis sugerencias.

  • En lugar de usar onDestroy() , use onPause() . Eso está garantizado para ser llamado; De acuerdo con la documentación oficial de Lifecycles, sólo onPause () está garantizado. OnStop y onDestroy no lo son.
  • OnSaveInstanceState y onPause son similares. Ambos se llaman cuando la aplicación deja el primer plano (es decir, entra en la zona de peligro potencial para ser asesinado), pero la diferencia con oSIS es el paquete temporal que proporciona. OnPause no proporciona ningún mecanismo de almacenamiento de datos, pero si está utilizando una base de datos que ya tiene uno. De acuerdo con la documentación, no hay una orden garantizada a la que se llama primero.
  • Punto 3) Eso es exactamente lo que el SIS se entiende
  • Punto 4) Usted podría hacer una "fila temporal" en su base de datos, es decir, guardar los datos temporales en la fila 1, pero cada vez que se realiza un ahorro, la fila 1 se borra. A continuación, en su onCreate (), compruebe si la fila 1 tiene datos reales o está vacía. (Si sus columnas no pueden estar vacías, utilice valores de marcador de posición predeterminados que nunca aparecerían como parte del uso normal).

Sugiero que cree un mecanismo uniforme para guardar el estado temporal. Puede utilizar cualquiera de los mecanismos sugeridos por la referencia de Android en lugar de Bundle

  • El contenido de TextView se pierde después de cambiar la orientación de la pantalla
  • Ciclo de vida del objeto de aplicación Android
  • Cómo distinguir entre el cambio de orientación y dejar la aplicación android
  • Fragmento onStop () se llama directamente después onStart () - ¿POR QUÉ?
  • Ciclo de vida de la actividad Android más simple
  • Ciclo de vida y servicio de las aplicaciones de Android
  • Ciclo de vida de la actividad de Android: ¿para qué sirven todos estos métodos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.