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:
- Ciclo de vida de la actividad de Android en Jelly Bean
- Cualquier manera de forzar la aplicación de memoria en el emulador de Android?
- Android - tutorial de Bloc de notas - ciclo de vida - algunos trabajos realizados dos veces?
- Android: aplicación global onPause () y onResume ()?
- OnRestart vs. OnResume - Cuestión del ciclo de vida de Android
- Si el usuario presiona el botón Atrás, intente guardar todos los datos en la base de datos e informar al usuario.
- 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).
- 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).
- 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()
yisFinishing()
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!
- ¿Registrar automáticamente eventos de ciclo de vida de Android mediante ActivityLifecycleCallbacks?
- ¿Cómo puedo saber que OnResume viene después de onCreate?
- OnPause, onResume eventos en Android
- OnNewIntent () y los oyentes registrados
- Cómo reiniciar la aplicación de Android desde la aplicación
- Fiabilidad del ciclo de vida de la actividad (onPause to onDestory)
- Ciclo de vida de Android View
- OnCreateView método se llama cuando? Y ¿Cuántas veces en el ciclo de vida de la actividad?
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()
, useonPause()
. 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
- Android: ¿Cómo resolver Bitmap java.lang.OutOfMemoryError?
- JUnit UnsatisfiedLinkError: android.util.Log.isLoggable (Ljava / lang / String;