¿Alguien puede ayudarme a saber acerca Bundle savedInstanceState
de onCreate(Bundle savedInstanceState)
que soy un novato en Android? Trato de entenderlo desde developer.android.com. Pero no puedo entender. ¿Alguien puede simplificarlo?
¿Alguien puede ayudarme a saber acerca Bundle savedInstanceState
de onCreate(Bundle savedInstanceState)
que soy un novato en Android? Trato de entenderlo desde developer.android.com. Pero no puedo entender. ¿Alguien puede simplificarlo?
Respuestas:
Si guarda el estado de la aplicación en un paquete (por lo general, datos dinámicos no persistentes onSaveInstanceState
), puede pasar de nuevo a onCreate
si la actividad necesita ser recreada (por ejemplo, cambio de orientación) para que no pierda esto antes información. Si no se proporcionaron datos, savedInstanceState
es nulo.
... debe usar el método onPause () para escribir cualquier dato persistente (como las ediciones del usuario) en el almacenamiento. Además, se llama al método onSaveInstanceState (Bundle) antes de colocar la actividad en dicho estado de fondo, lo que le permite guardar cualquier estado de instancia dinámica en su actividad en el Bundle dado, para luego ser recibido en onCreate (Bundle) si la actividad necesita ser recreado. Consulte la sección Ciclo de vida del proceso para obtener más información sobre cómo el ciclo de vida de un proceso está vinculado a las actividades que aloja. Tenga en cuenta que es importante guardar datos persistentes en onPause () en lugar de onSaveInstanceState (Bundle) porque este último no es parte de las devoluciones de llamada del ciclo de vida, por lo que no se llamará en todas las situaciones como se describe en su documentación.
onCreate(Bundle savedInstanceState)
Obtendrá el Bundle
valor nulo cuando la actividad comience por primera vez y se usará cuando se cambie la orientación de la actividad .......
http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android proporciona otra forma elegante de lograr esto. Para lograr esto, tenemos que anular un método llamado onSaveInstanceState()
. La plataforma Android permite a los usuarios guardar cualquier estado de instancia. El estado de la instancia se puede guardar en el paquete. El paquete se pasa como argumento al método onSaveInstanceState.
podemos cargar el estado de la instancia guardada del paquete pasado como argumento al onCreate
método. También podemos cargar el estado de la instancia guardada en el onRestoreInstanceState
método. Pero lo dejaré para que los lectores lo descubran.
savedInstanceState
será non- null
si onSavedInstanceState()
se llamó previamente. los cambios de orientación son solo un ejemplo en el que esto puede ocurrir.
Bundle
argumento onCreate(Bundle)
será non- null
if y solo si Activity
tenía el onSaveInstanceState
método llamado anteriormente. Esto sucede durante los cambios de orientación ... y también ocurre cuando la actividad regresa después de ser eliminada por el sistema operativo y cuando se activa cualquier otro cambio de configuración de interés en su dispositivo.
Como respondió Dhruv Gairola, puede guardar el estado de la aplicación utilizando Bundle savedInstanceState. Estoy tratando de dar un ejemplo muy simple que los nuevos alumnos como yo puedan entender fácilmente.
Supongamos que tiene un fragmento simple con TextView y Button. Cada vez que hace clic en el botón, el texto cambia. Ahora, cambie la orientación de su dispositivo / emulador y observe que perdió los datos (es decir, los datos modificados después de hacer clic) y el fragmento comienza como la primera vez. Al usar Bundle savedInstanceState podemos deshacernos de esto. Si echas un vistazo al ciclo de vida del fragmento. Fragment Lifecylce obtendrá que se llama a un método "onSaveInstanceState" cuando el fragmento está a punto de destruirse.
Entonces, podemos guardar el estado significa que el valor de texto modificado en ese paquete como este
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Después de hacer la orientación, se llamará al método "onCreate", ¿verdad? para que podamos hacer esto
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Ahora, no perderá su valor después de la orientación. El valor modificado siempre se mostrará.
Función onCreate (Bundle savedInstanceState) en Android:
1) Cuando una actividad llama o se inicia por primera vez, el método onCreate (Bundle savedInstanceState) es responsable de crear la actividad.
2) Cuando alguna vez se cambia la orientación (es decir, de horizontal a vertical o vertical a horizontal) de la actividad o cuando una Actividad se termina de forma forzada por cualquier Sistema Operativo y luego se guarda el Estado de la Entrada, es decir, el objeto de la Clase de Paquete guardará el estado de una Actividad.
3) Después de cambiar la Orientación, entonces onCreate (Bundle savedInstanceState) llamará y recreará la actividad y cargará todos los datos de savedInstanceState.
4) Básicamente, la clase Bundle se usa para almacenar los datos de la actividad siempre que ocurra la condición anterior en la aplicación.
5) onCreate () no es necesario para las aplicaciones. Pero la razón por la que se usa en la aplicación es porque ese método es el mejor lugar para colocar el código de inicialización.
6) También puede poner su código de inicialización en onStart () o onResume () y cuando su aplicación se cargue primero, funcionará igual que en onCreate ().