Reciclaje de la actividad

Manejo de datos cuando la actividad es reciclada

Cuando una actividad entra en estado detenido, el sistema puede reciclarla.

Por ejemplo, cuando la actividad A inicia la actividad B, la actividad A pasa al estado detenido. Si el sistema recicla la actividad A por falta de memoria y el usuario pulsa el botón Atrás para volver a la actividad A,

la actividad A se mostrará con normalidad. Sin embargo, en este caso no se ejecutará onRestart(), sino que se invocará onCreate(), ya que la actividad A se vuelve a crear.

Si la actividad A contenía datos temporales, como texto introducido en un cuadro de texto, estos datos se perderán al reciclarse la actividad.

Si esto ocurre en nuestra aplicación, afectará negativamente a la experiencia del usuario.

Afortunadamente, Android proporciona un método de callback llamado onSaveInstanceState(), que se garantiza que se llamará antes de que la actividad sea reciclada.

Esto nos permite resolver el problema de la pérdida de datos temporales al reciclarse la actividad.

El método onSaveInstanceState() recibe un parámetro de tipo Bundle.

La clase Bundle proporciona varios métodos para guardar datos, como putString() para cadenas de texto y putInt() para números enteros.

Sobrescribir el método onSaveInstanceState

// Español
@Override
protected void onSaveInstanceState(Bundle outState) { // Este método se llama antes de que la actividad sea reciclada
    super.onSaveInstanceState(outState);
    outState.putString("user_name", "Srta. Pan");
}Lenguaje del código: JavaScript (javascript)
// Español
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.e(TAG, "onCreate: ");

    if (savedInstanceState != null) // En onCreate podemos comprobar si el Bundle contiene datos; si los tiene, significa que la actividad fue reciclada y ahora se está recreando
    {
        Log.e(TAG, savedInstanceState.getString("user_name"));
    }
}Lenguaje del código: JavaScript (javascript)

Obtener los datos del Bundle al recrear la actividad

En el método onCreate, el sistema pasa un parámetro de tipo Bundle:

// Español
protected void onCreate(Bundle savedInstanceState) {Lenguaje del código: JavaScript (javascript)

Obtener los datos del Bundle

// Español
if (savedInstanceState != null) // En onCreate podemos comprobar si el Bundle contiene datos; si los tiene, significa que la actividad fue reciclada y ahora se está recreando
{
    Log.e(TAG, savedInstanceState.getString("user_name"));
}Lenguaje del código: JavaScript (javascript)

Reciclaje de la actividad

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *