1. Code
  2. Mobile Development
  3. Android Development

Opciones de gestión de datos para aplicaciones de Android

Scroll to top

Spanish (Español) translation by Santiago Diaz (you can also view the original English article)

Este consejo rápido de Android te presentará las diversas opciones de almacenamiento de datos disponibles en la plataforma Android. También se proporcionará una breve descripción práctica con consideraciones para cada opción de almacenamiento.

Cuando desarrollas aplicaciones de Android, tienes varias opciones en términos de cómo almacenas y administras tus datos. Dependiendo de la aplicación, es posible que uses más de uno de estos para diferentes tareas de datos.


Almacenamiento interno

Puedes almacenar elementos de datos en el almacenamiento interno de los dispositivos de tus usuarios. La ventaja de esto es que no depende de ningún medio externo, pero la desventaja es que algunos dispositivos tienen cantidades extremadamente limitadas de espacio de almacenamiento disponible. El almacenamiento en la memoria interna significa esencialmente guardar archivos de datos dentro de la estructura de directorios del dispositivo interno.

El siguiente código Java demuestra la apertura de un archivo para la salida de datos:

1
//get a FileOutputStream object by passing the file-name

2
FileOutputStream dataFileOutput = openFileOutput("datafile", Context.MODE_PRIVATE);

Cuando guardas archivos en el almacenamiento interno, otras aplicaciones no pueden acceder a ellos y, de forma predeterminada, tampoco el usuario, por lo que ofrece una buena confiabilidad. El método de escritura FileOutputStream toma parámetros de bytes, por lo que solo puedes usar esta técnica para almacenar elementos de datos que tu programa puede convertir a bytes.


Tarjetas SD

Muchos usuarios de Android dependen del almacenamiento de medios externos, como tarjetas SD, debido a un almacenamiento interno insuficiente. Las tarjetas SD ofrecen a tus aplicaciones una mayor cantidad de espacio de almacenamiento, pero imponen consideraciones adicionales. Por ejemplo, no puedes asumir que un usuario tendrá una tarjeta SD u otro recurso multimedia externo. Por esta razón, tu código de programación debe realizar comprobaciones antes de almacenar datos de esta manera. También debes tener en cuenta la posibilidad de que el usuario cambie su tarjeta SD.

Con la clase Environment, tus aplicaciones pueden verificar la disponibilidad de almacenamiento externo grabable de la siguiente manera:

1
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
2
//can use the external storage

3
}

También vale la pena tener en cuenta que otras aplicaciones y el usuario pueden acceder directamente a los archivos guardados en una tarjeta SD, por lo que los datos son más vulnerables a la corrupción.


Bases de datos

Si tu aplicación usa elementos de datos más complejos, puedes crear una base de datos SQLite para almacenarlos usando el modelo relacional. Cuando creas una base de datos SQLite para tu aplicación, puedes acceder a ella desde cualquier punto dentro de tu código Java y no será accesible desde ningún otro lugar. El uso de una base de datos tiene muchas ventajas, como la capacidad de almacenar y ejecutar consultas estructuradas.

Para construir una base de datos SQLite personalizada a partir de tu código Java, puedes extender la clase SQLiteOpenHelper, luego definir y crear tus tablas dentro del método "onCreate", de la siguiente manera:

1
public void onCreate(SQLiteDatabase db) {
2
db.execSQL("CREATE TABLE Item (ItemID INTEGER, ItemName TEXT);");
3
}

Esta declaración crea una tabla de base de datos con dos columnas. La clase SQLiteDatabase proporciona los medios para administrar los datos, incluidos los métodos de consulta, inserción y actualización. Una posible desventaja de usar una base de datos SQLite en tus aplicaciones de Android es la cantidad de código de procesamiento requerido y el conjunto de habilidades necesarias. Si ya conoces SQL, no deberías tener problemas.


Preferencias compartidas

Si necesitas almacenar elementos de datos simples para tus aplicaciones, el enfoque más sencillo es utilizar Preferencias compartidas. Esta es posiblemente la opción de administración de datos más fácil de implementar, pero solo es adecuada para elementos de tipo primitivo como números y texto. Con las preferencias compartidas, modela tus elementos de datos como pares clave-valor. El siguiente código demuestra cómo adquirir una referencia al objeto SharedPreferences para una aplicación y escribirle un valor:

1
//get the preferences, then editor, set a data item

2
SharedPreferences appPrefs = getSharedPreferences("MyAppPrefs", 0);
3
SharedPreferences.Editor prefsEd = appPrefs.edit();
4
prefsEd.putString("dataString", "some string data");
5
prefsEd.commit();

Todo lo que guardes en Preferencias compartidas seguirá estando disponible la próxima vez que se ejecute tu aplicación, por lo que es ideal para guardar elementos como las preferencias y la configuración del usuario. Cuando tu aplicación se inicia, puedes verificar las Preferencias compartidas, luego presentar tu interfaz y funcionalidad en consecuencia. El siguiente código demuestra la recuperación del elemento de datos de cadena:

1
//get the preferences then retrieve saved data, specifying a default value

2
SharedPreferences appPrefs = getSharedPreferences("MyAppPrefs", 0);
3
String savedData = appPrefs.getString("dataString", "");

Almacenamiento web

Dado que los dispositivos Android brindan conectividad a Internet, tus aplicaciones pueden, por supuesto, usar datos almacenados en la Web. Naturalmente, debes considerar cómo tus aplicaciones se enfrentarán a la conectividad restringida o faltante. Al igual que con una aplicación web, esta opción te permite almacenar datos utilizando prácticamente cualquier plataforma o modelo que prefieras. El lenguaje Java también se beneficia de una variedad de bibliotecas estándar para manejar datos obtenidos a través de una red, de fuentes como bases de datos SQL y documentos XML. Los paquetes java.net y android.net proporcionan clases para administrar datos en red.


Conclusión

Si estás desarrollando en Eclipse, puedes controlar manualmente aspectos del almacenamiento de datos en dispositivos virtuales en la perspectiva de DDMS.

Eclipse DDMS PerspectiveEclipse DDMS PerspectiveEclipse DDMS Perspective

Inevitablemente, debes adaptar tu enfoque de gestión de datos a tus propios proyectos de desarrollo de Android. La plataforma es flexible, por lo que hay muchas opciones disponibles. Cuando implementes la administración de datos dentro de tus aplicaciones, asegúrate de probarlas en dispositivos reales, así como en el emulador, ya que hay más posibilidades de error cuando los usuarios acceden a su funcionalidad dentro de sus propios contextos únicos.


Sobre la autora

Sue Smith Soy una desarrolladora web/software y una escritora técnico/comedia; consulta BeNormal.info para obtener más detalles. Las aplicaciones sin sentido son mi primer intento de desarrollo de Android. He escrito para muchos clientes diferentes, incluida Smashing Magazine. Mis propios sitios incluyen la revista de artes falsas BrainDeadAir. Sígueme en Twitter @BrainDeadAir o envíame un correo electrónico a sue@benormal.info.