Persistencia de datos en Android

Persistencia de datos en Android

Existen casos como el cambio automático de orientación (al girar el dispositivo) en los que Android destruye la activity y crea una nueva, pero destruyendo también la información que ha sido introducida. Para solucionar esto Android ofrece métodos que almacenan los datos de forma temporal para después restaurarlos en la nueva Activity y así mantener la persistencia de datos.

Con la aparición de los fragments el conflicto fue en aumento, ya que, estos métodos solo son efectivos desde las activities, y, aunque era posible la persistencia, acababa convirtiéndose en un proceso algo complejo. Android optó por una solución efectiva, basada en el identificador de los componentes. Así pues, un componente que disponga de un ID único, automáticamente mantiene la persistencia de datos tanto en los activities como en los fragments.

Aun así es conveniente conocer como trabajan estos métodos que no pertenecen al ciclo de vida de la activity ni del fragment.

A continuación un ejemplo básico de persistencia de datos de un activity mediante estos métodos.

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="//schemas.android.com/apk/res/android"
  3. xmlns:tools="//schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:orientation="vertical"
  7. android:id="@+id/lay"
  8. tools:context="xip.midominio.com.persistencia.MainActivity">
  9. <EditText
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:hint="nombre"/>
  13. </LinearLayout>

MainActivity.java

  1. package xip.midominio.com.persistencia;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.widget.EditText;
  5. import android.widget.LinearLayout;
  6. public class MainActivity extends AppCompatActivity {
  7. LinearLayout layout;
  8. EditText usuario;
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.activity_main);
  13. layout = (LinearLayout) findViewById(R.id.lay);
  14. usuario = (EditText) layout.getChildAt(0);
  15. }
  16. @Override
  17. public void onSaveInstanceState(Bundle outState){
  18. super.onSaveInstanceState(outState);
  19. outState.putString("nombre",usuario.getText().toString());
  20. }
  21. @Override
  22. protected void onRestoreInstanceState(Bundle savedInstanceState) {
  23. super.onRestoreInstanceState(savedInstanceState);
  24. usuario.setText(savedInstanceState.getString("nombre"));
  25. }
  26. }


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso