DesarrolloLibre

Desarrollo Web, Android, juegos y mucho más

Categorias
14-07-2014

Aparte de la Base de Datos SQLite en Android existen otros medios para almacenar información de la aplicación e inclusive información de preferencias del usuario; en esta primera entrega, veremos algunas de ellas para luego adentrarnos un poco más en cada una.

Antes de hablar de los tipos de medios de persistencia que existen en Android es importante refrescar un poco el concepto como tal de persistencia en informática, nuestro campo de interés.

La persistencia en el ámbito de una aplicación indiferentemente si es una aplicación Android o de cualquier otro tipo consiste en que los datos manipulados por la aplicación "sobrevivan" a la ejecución de la misma en el tiempo; en otras palabras; consiste en almacenar los datos en un medio secundario, no volátil para posterior reconstrucción y utilización; por lo tanto son independientes en el tiempo del proceso que los creó.

Coloquialmente hablando... consiste en que los datos no se borren luego de que la aplicación se cierre.

La Persistencia en Android

La persistencia en Android consiste en tres tipos de almacenamientos con un propósito muy específico.

1. Persistencia en Android: Preferencias Compartidas o Shared Preferences

Con Shared Preferences podemos almacenar y recuperar en el formato clave-valor información como texto, booleanos y números; lo que lo convierte en potencial para almacenar configuraciones del usuario como: estilos, preferencias, etc.

1.1 Shared Preferences en la práctica

los modos de acceso posibles son:

Su uso es sencillo; si queremos recuperar una "preferencia" que hemos llamado "MiPreferencia" basta con emplear el siguiente código:

SharedPreferences preferencia =
     getSharedPreferences("MiPreferencia",Context.MODE_PRIVATE);

Para obtener la información de la preferencia:

SharedPreferences preferencia =
	boolean = preferencia.getBoolean("habilitar_imagenes", true);

Los parámetros consisten en:

Para guardar o modificar información de la preferencia:

SharedPreferences preferencia =
	boolean = preferencia.putBoolean("habilitar_imagenes", false);

2. Persistencia en Android: Almacenar archivos en memoria

Este tipo de persistencia es uno de los más conocidos debido a que son soportados por la mayoría de los lenguajes de programación aparte de Java; consiste en guardar y recuperar la información en archivos; Android permite escribir y leer archivos que se encuentren ubicados en la propia Memoria Interna del dispositivo; al igual que con Shared Preferences.

2.1 Almacenar archivos en Memoria Interna

Hay que tener en cuenta que estos archivos son guardados en la Memoria Interna del dispositivo la cual puede ser limitada en el dispositivo y puede ralentizar el mismo.

Consideraciones

No es necesario pedir permisos especiales en el Manifest.

Sobre su uso: Apertura y Escritura de archivos en Android

Android proporciona el método OutputStreamWriter para escribir archivos en Android a través de la apertura del mismo con el método openFileOutput; el mismo recibe como parámetro:

Ejemplo de escritura de un archivo en Android
		try
		{
		    OutputStreamWriter outputStreamWriter=
		        new OutputStreamWriter(
		            openFileOutput("prueba.txt", Context.MODE_PRIVATE));
		 
		    outputStreamWriter.write("Hola Mundo");
		    outputStreamWriter.close();
		}
		catch (Exception e)
		{
		    e.printStackTrace();
		}
Sobre su uso: Lectura de archivos en Android

Al igual que en Java, utilizamos el método BufferedReader para leer los archivos en Android con previa apertura del mismo con el método openFileInput; luego podemos utilizar los métodos comunes en java.io para leer el contenido.

Ejemplo de lectura de un archivo en Android
		try
		{
		    BufferedReader fin =
		        new BufferedReader(
		            new InputStreamReader(
		                openFileInput("prueba.txt")));
		 
		    String texto = fin.readLine();
			Log.i("ddd",texto);
		    fin.close();
		}
		catch (Exception e)
		{
		    e.printStackTrace();
		}

2.2 Almacenar archivos en Memoria Externa

Podemos guardar nuestros archivos en la Memoria Externa (en la mayoría de los casos, la memoria SD) con los permisos solicitados en el Manifest; hay que tener en cuenta que los archivos se encuentran accesibles para todos: aplicaciones y usuario; por lo tanto no es recomendable utilizarlos para almacenar información sensible.

Para leer y escribir respectivamente en Memoria Externa (SD) es necesario pedir los siguientes permisos especiales en el Manifest:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Sobre su uso: Estatus de la Memoria Externa en Android

Antes de realizar cualquier operación sobre la Memoria Externa es necesario saber el status de la misma mediante la funcion Environment.getExternalStorageStatus():

Para leer o escribir en Memoria Externa es necesario primero obtener la ruta hacia la Memoria Externa; la podemos obtener llamando a la función Environment.getExternalStorageDirectory().

Sobre su uso: Escritura de archivos en Android

Ahora podemos abrir el archivo creando un objeto File provisto por java.io pasando el objeto de tipo File como parámetro a la función FileOutputStream que a su vez se lo pasamos como parámetro a la función OutputStreamWriter que permite abrir el archivo en modo de escritura:

		try
		{
		    File ruta = Environment.getExternalStorageDirectory();
		 
		    File file = new File(ruta.getAbsolutePath(), "prueba.txt");
		 
		    OutputStreamWriter outputStreamWriter =
		        new OutputStreamWriter(
		            new FileOutputStream(file));
		 
		    outputStreamWriter.write("Hola Mundo.");
		    outputStreamWriter.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
Sobre su uso: Lectura de archivos en Android

Para leer un archivo, luego de creado el objeto de tipo File enclausulamos el mismo dentro de un objeto que permita la lectura el mismo como BufferedReader; de aquí podemos leer el mismo como cualquier función provista por Java.io:

		try
		{
		    File ruta = Environment.getExternalStorageDirectory();
		 
		    File file = new File(ruta.getAbsolutePath(), "prueba.txt");
		    
		 
		    BufferedReader bufferedReader =
		        new BufferedReader(
		            new InputStreamReader(
new FileInputStream(file)));
		 
		    String texto = bufferedReader.readLine();
		    bufferedReader.close();

		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

3. Persistencia en Android: Base de Datos SQLite

Este tipo de persistencia es bastante conocidos por los desarrolladores no solo de aplicaciones para Android, si no también en otros lenguajes como lo son PHP, Java (Web o de escritorio) C#, etc; este sistema gestor de base de datos es desconocidas para algunos; pero son ampliamente utilizados en aplicaciones tan conocidas como:

SQLite es un sistema gestor de bases de datos relacional contenida en una relativamente pequeña biblioteca escrita en C. A diferencia de los sistemas de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo.

Algunas características interesantes de SQLite

Conclusiones

Este artículo representa una entrada a este mundo de la Persistencia en Android; presentamos alguna de sus características y posibles usos; en posteriores artículos nos adentramos en cada uno de ellos con especial interés en SQLite.

Enlaces de Interés


Publicidad

Give me for a beer!

Algunos recursos que te pueden interesar

Telegram messenger para Android

Telegram messenger para Android

Paleta de colores para el Material Design

Paleta de colores para el Material Design

Creando increibles Drawer en Android con MaterialDrawer

Creando increibles Drawer en Android con MaterialDrawer

Algunos artículos que te pueden interesar

Android basico: definición, eventos y uso de los botones (parte 1)

Android basico: definición, eventos y uso de los botones (parte 1)

En este artículo veremos cómo definir y utilizar mediante eventos un botón en Android.

Andrés Cruz 19-06-2014

Cómo renombrar un paquete en Android Studio

Cómo renombrar un paquete en Android Studio

En esta entrada veremos cómo renombrar un paquete en Android Studio siguiendo unos sencillos pasos.

Andrés Cruz 18-09-2017

La API de archivos en JavaScript - accediendo al contenido

La API de archivos en JavaScript - accediendo al contenido

En esta entrada presentaremos una API para la lectura de los archivos cargados mediante input type="file" u otros métodos como el Drag and Drop con JavaScript.

Andrés Cruz 09-02-2016