Paso un booleano a mi Actividad cuando lo creo a través de un BundleExtra de Intención. Ahora mirando el activity lifecycle, si mi actividad se detiene (onStop
), entonces otra aplicación necesita memoria para que el proceso de la aplicación se elimine, luego el usuario navega a la actividad (onCreate
). ¿El último onCreate contendrá mi booleano original que aprobé? Asumiría que si quisiera que ese booleano fuera guardado, necesitaría guardarlo en OnSaveInstanceState
, ¿correcto?Si se detiene una actividad, se vuelve a crear lo que se pasa a getIntent()
Respuesta
me gustaría utilizar onPause() por esta razón (de la docs)
Tenga en cuenta que es importante guardar los datos persistentes en onPause() en lugar de onSaveInstanceState (Bundle), ya que esta última no es parte de las devoluciones de llamadas del ciclo de vida , por lo que no se llamará en todas las situaciones como descrito en su documentación.
A continuación, vuelva a leerlo en onCreate()
p. de base de datos o algún otro recurso que lo ha almacenado en
Así que dependiendo de lo importante que es el valor booleano que va a utilizar el mecanismo de ahorro que desea .. de estado persistente:. http://developer.android.com/reference/android/app/Activity.html#SavingPersistentState
Y para el estado de la interfaz de usuario, tales como textos sencillos , selecciones utilizan onSaveInstanceState
como se describe aquí: Saving Android Activity state using Save Instance State
A modo de resumen: cuando el proceso matado booleano = idosi no se guardan :)
Ma Uno V. tiene razón, en su caso debe ir con onPause()
El hecho es onSaveInstanceState (paquete Bundle) está diseñado para guardar el estado en su instancia actual. Así que cuando su aplicación está muerto, el haz ahorrado demasiado
Usted puede utilizar SharedPreferences para guardar su booleano:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
sharedPreferences.edit().putBoolean("hiBoolean", booleanValue).commit();
y recuperarlo en su onCreate:
Boolean hiBoolean = sharedPreferences.getBoolean("hiBoolean", true);
Esto no es correcto. Cuando se mate el proceso que aloja su aplicación, ActivityManager conservará el "paquete de estado de la instancia de guardar" y se transmitirá cuando el usuario navegue a su aplicación. Android creará un proceso y creará una instancia de la aplicación y luego creará la actividad que estaba en la parte superior de la pila y luego pasará el último paquete de estado de la instancia guardada. Anteriormente, este paquete no se podía conservar a través de los reinicios del dispositivo, pero Android se está volviendo increíble día tras día e iniciando el nivel de SDK 21, el paquete también se conserva durante los reinicios. –
En realidad, cuando su actividad se recrea, el intento original se seguirá utilizando. getIntent()
devolverá la misma intención que cuando se creó por primera vez. Sin embargo, si tiene otros datos que desea conservar cuando se recrea la actividad, deberá guardarlos usando saveInstanceState()
. Puede verificar esto simplemente girando el dispositivo con una actividad en ejecución, ya que se destruirá y volverá a crear con la misma intención. Para obtener más información, consulte here.
- 1. ¿Cómo saber si se llama a una actividad usando startActivityForResult o simplemente se llama usando startActivity?
- 2. ¿Cómo iniciar el hilo si se presiona el botón y detenerlo si se vuelve a presionar?
- 3. Diagnosticando una aplicación que no se detiene
- 4. cuando el iframe se vuelve a cargar?
- 5. tmux no se vuelve a conectar
- 6. ¿Cómo hacer que una aplicación de Android regrese a la última actividad abierta cuando se vuelve a lanzar?
- 7. ¿Canvas se vuelve a dibujar cada vez que cambia algo?
- 8. ¿Cómo paso los datos de un BroadcastReceiver a una actividad que se inicia?
- 9. Android: el servicio se detiene cuando se cierra Activity
- 10. ¿Cómo forzar a una página a volver a cargar si todo lo que se cambió en la url es hash?
- 11. Objeto indefinido que se pasa a través de Requirejs
- 12. ¿Cómo se descompila, se edita en eclipse y se vuelve a compilar una aplicación? ¿Paso a paso?
- 13. ¿Por qué solo se llama a IValidatableObject.Validate si se pasa la validación de la propiedad?
- 14. ¿Cómo se pasa boost :: bind objects a una función?
- 15. UITableViewCell se vuelve azul cuando se desplaza
- 16. Android se bloquea cuando la aplicación se cierra y se vuelve a abrir
- 17. ¿Cómo se "vuelve a incluir" un archivo que se excluyó del control de origen?
- 18. NSTimer no se detiene
- 19. Agregue un controlador OnClick con jQuery solo una vez, incluso si se vuelve a llamar
- 20. Si se lanza una excepción en una lista <T> .ForEach, ¿se detiene la iteración?
- 21. Evitar que se vuelva a crear la actividad de Android al apagar la pantalla
- 22. getResourceAsStream() siempre se vuelve nula
- 23. Problema raro donde el botón no se vuelve a habilitar a menos que se haga clic en el mouse
- 24. ¿Qué le sucede a una AsyncTask cuando se detiene/destruye la actividad de inicio mientras aún está en ejecución?
- 25. servicio de Android se detiene
- 26. Comprobar si el argumento se pasa a una función Java Script
- 27. ¿Es posible pasar argumentos a un fragmento después de que se haya agregado a una actividad?
- 28. cocos2d conseguir un sprite a parpadear, se vuelve invisible
- 29. Ver lo que se ha instalado a través de MacPorts
- 30. android.app.Application no se puede crear una instancia debido a NullPointerException
perfecto. Como un resumen es exactamente lo que estaba buscando. De hecho, quiero que ese booleano se haya ido para que pueda rastrear dónde se llama al onCreate desde – jsb