• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Data storage
 

Data storage

on

  • 2,458 views

Presentación realizada para explicar los diferentes sistemas de almacenamiento que provee Android.

Presentación realizada para explicar los diferentes sistemas de almacenamiento que provee Android.

Statistics

Views

Total Views
2,458
Views on SlideShare
2,457
Embed Views
1

Actions

Likes
0
Downloads
49
Comments
0

1 Embed 1

http://seehope.www.linknow.kr 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Data storage Data storage Presentation Transcript

    • TALLER DE DESARROLLO DE APLICACIONES MÓVILES Data Storage Por: Felipe Hernández R. Twitter: @FelipeDev
    • Códigosde ejemplo
    • Códigos fuentesPara una mejor comprensión de este taller se hanrealizado proyectos (en eclipse) de ejemplo para cadauno de los tipos de DataStorage, exceptuando el detipo NetworkConnections.En su mayoría las aplicaciones imprimen mensajespor consola para visualizar los estados de laaplicación.El siguiente es el enlace a los códigos fuentescomentados anteriormente:https://github.com/FelipeDev/Android-Data-StorageSe recomienda revisar los proyectos a medida que seavanza en la presentación.
    • Uso de códigos fuentesPara utilizar los proyectos del taller se debe clonar elrepositorio Git, o bien descargar los archivosdirectamente desde el enlace entregado en la slideanterior y copiar los proyectos al workspace deEclipse, una vez dentro de eclipse, se deben importarlos proyectos copiados en el workspace.
    • Tipos dealmacenamiento
    • Android Storage* Shared Preferences* Internal Storage* External Storage* SQLite Databases* Network Connections
    • SHARED PREFERENCES
    • Shared preferencesEste tipo de almacenamiento permite salvar datosde tipo int, float, boolean, long y string. Estos datospersistiran incluso cuando la aplicación esfinalizada.Para obtener los datos almacenados existen dosmétodos: getSharedPrefereces(); getPreferences();
    • getSharedPreferences()Este método se debe utilizar cuando se deben llamarmúltiples archivos que contienen la información de laspreferencias compartidas. Cada archivo es identificado porsu nombre, el cual se debe especificar como primerparámetro.Ej:SharedPreferences settings =getSharedPreferences(FILE_NAME,0);boolean silent = settings.getBoolean("silentMode", false);setSilent(silent);
    • getPreferences()Este método se debe utilizar se necesita sólo un archivo depreferencias para el Activity. Como éste será el únicoarchivo, no se debe proveer un nombre al invocarlo.Ej:SharedPreferences settings =getPreferences(0);boolean silent = settings.getBoolean("silentMode", false);setSilent(silent);
    • getPreferences()Este método se debe utilizar se necesita sólo un archivo depreferencias para el Activity. Como éste será el únicoarchivo, no se debe proveer un nombre al invocarlo.Ej:SharedPreferences settings =getPreferences(0);boolean silent = settings.getBoolean("silentMode", false);setSilent(silent);
    • Acerca de SharedPreferencesLas preferencias compartidas no son únicamentepara guardar preferencias de usuario, como porejemplo el ringtone que pueda haber seleccionadoel usuario. Si lo que se desea es almacenarpreferencias de usuario para una aplicación enparticular, véase PreferencesActivity, lo cual proveeun framework para crear preferencias de usuariolos cuales serán automáticamente persistidos(usando SharedPreferences)
    • INTERNAL STORAGE
    • INTERNAL STORAGEEs posible guardar archivos directamente en elsistema de almacenamiento interno del dispositivo.Por defecto los archivos guardados en elalmacenamiento interno, son privados a laaplicación que lo crea, por tanto, las demásaplicaciones no pueden acceder a estos archivos.Cuando el usuario desinstala la aplicación, losarchivos son eliminados.
    • Creación y escritura en el almacenamiento internoPara crear y escribir en archivos creados en elalmacenamiento interno, se hace de la siguienteforma:a) Ejecutar el método openFileOutput() con el nombre del archivo y el modo de operación. Esto retorna un FileOutputStream.b) Escribir al archivo con write()C) Cerrar el stream con close()
    • Lectura desde el almacenamiento internoPara leer archivos desde el almacenamiento interno, sehace de la siguiente manera:a) Ejecutar el método openFileInput() con el nombre del archivo y el modo de operación. Esto retorna un FileInputStream.b) Leer los bytes desde el archivo con read()C) Cerrar el stream con close()
    • Guardar archivos en cachéSi se desea guardar datos en caché, más allá dealmacenarlos de manera persistente, se debe utilizar elmétodo getCacheDir() para abrir un objeto de tipo File querepresenta el directorio interno donde una aplicaciónpuede guardar archivos de manera temporal. No serecomienda utilizar más de 1mb de almacenamientotemporal.Importante: Cuando el dispositivo tiene poco espaciode almacenamiento interno, Android puede eliminar losarchivos en caché para recuperar espacio.
    • Otros métodos útilesgetFilesDir(): Obtiene la ruta absoluta de un archivo enel sistema de archivos donde los archivos internos sonalmacenados.getDir(): Crea (o abre si ya existe) un directorio dentrodel espacio del almacenamiento interno.deleteFile(): Elimina un archivo en el almacenamientointerno.fileList(): Devuelve un arreglo con los archivosguardados por la aplicación (actual) en el sistema dealmacenamiento interno
    • EXTERNAL STORAGE
    • EXTERNAL STORAGETodo dispositivo compatible con Android soportaun “almacenamiento externo” compartido quepuede ser utilizado para almacenar archivos. Puedeser un medio removible (como una tarjeta SD) o unalmacenamiento interno (no removible). Losarchivos almacenados en un almacenamientoexterno pueden ser leídos por todos e inclusomodificados por el usuario cuando éste habilita elalmacenamiento masivo USB para transferirarchivos a su computador.
    • Precauciones al utilizar almacenamiento externoLos archivos guardados en un medio dealmacenamiento externo pueden desaparecer si elusuario monta este medio en un computador osimplemente lo desmonta del dispositivo, y no hayseguridad impuesta a los archivos que se escribenen un medio de almacenamiento externo.Todas las aplicaciones pueden leer los datosalmacenados en este tipo de almacenamiento yclaro… los usuarios pueden eliminar estos datos.
    • Como usar External StorageAntes de hacer cualquier cosa con elalmacenamiento externo, se debe llamar al métodogetExternalStorageState() para comprobar si existe algúnmedio disponible.El medio puede devolver diferentes estadosespecificados en:http://developer.android.com/reference/android/os/Environment.htmlEl uso de los diferentes estados, sirve para notificaral usuario acerca de posibles anomalías con sumedio externo.
    • Crear archivos en External StorageSi se está utilizando la api de nivel 8 (OS 2.2) osuperior, se debe utilizar el método getExternalFileDir()para abrir un archivo que represente el directoriodonde se almacenarán los archivos. Este métodorecibe como parámetro el tipo de directorio que sedesea crear, como DIRECTORY_MUSIC oDIRECTORY_PICTURES.Al especificar el tipo de directorio nos aseguramos queel scanner de medios de Android categorizarácorrectamente nuestros archivos y/o directorios.
    • Crear archivos en External StorageSi se está utilizando la api de nivel 7 (OS 2.1) oinferior, se debe utilizar el métodogetExternalStorageDirectory() para abrir un archivo querepresente el directorio raíz del almacenamientoexterno. Luego se debn escribir los datos en elsiguiente directorio: /Android/data/<nombre_Package>filesDonde <nombre_Package> es el nombre del paquete denuestra app, por ejemplo: cl.mobdev.app
    • Grabar archivos “caché” en External StorageSi se está utilizando la api de nivel 8 (OS 2.2) osuperior, se debe utilizar el método getExternalCacheDir()para abrir un archivo que represente el directoriotemporal donde almacenar los archivos en sistemadealmacenamiento externo.Si se está utilizando la api de nivel 7 (OS 2.1) oinferior, se debe utilizar el métodogetExternalStorageDirectory() y seguir los mismos pasosque en la diapositiva anterior.
    • ImportanteSi tenemos un archivo de audio, imagen o video, elscanner de medios de Android podría reconocernuestros archivos multimedia y agregarlos a laslistas que nombren este tipo de archivos.Para evitar que los archivos agregados por nuestraapp aparezcan en las listas de otras aplicaciones,se debe incluir un archivo vacío de nombre .nomediadentro del directorio de los archivos..
    • NetworkConnections
    • NETWORK CONNECTIONSSi tenemos conexión a una red local ointernet, podemos almacenar y obtener nuestrosarchivos o datos mediante un servicio web.Para utilizar este tipo de almacenamiento se debeutilizar las clases correspondientes ubicadas en lospackages:java.net.*;Android.net.*;
    • Basesde datos
    • BASES DE DATOSAndroid provee total soporte para bases de datosSQLite. Cualquier base de datos creada, seráaccesible por su nombre por cualquier clase dentrode nuestra app, pero no podrá ser accedida desdefuera de nuestra app.Android provee de una herramienta para laadministración de bases de datos SQLite, llamadasqlite3 la que permite navegar entre tablas decontenido y ejecutar comandos SQL en bases dedatos SQLite.
    • CREAR BASES DE DATOSPara crear una nueva base de datos SQLite ennuestra app, se recomienda crear una subclase deSQLiteOpenHelper() y sobre-escribir el método onCreate(), enel cual se puede ejecutar comandos de tipo SQL paracrear tablas en la base de datos.Se puede obtener una instancia de nuestra propiaimplementación de SQLiteOpenHelper() usando unconstructor previamente definido.
    • Leer y escribir registros en la DBPara escribir registros dentro de la base de datos, se debeutilizar el método getWritableDatabase(), para leer datos de labase de datos se debe utilizar getReadableDatabase(). Ambosdevolverán un objeto de tipo SQLiteDatabase que representa labase de datos y provee métodos para ejecutar operacionessobre ella.Para ejecutar consultas a la base datos es posible realizarlasmediante el método query(), el cual acepta varios parámetros deconsulta como la tabla a consultar, selección, columnas, etc.
    • Consultas complejas y cursoresPara consultas complejas como aquellas que requierendar alias a las columnas, se debe utilizar un objeto de tipoSQLiteQueryBuilder el cual proveerá de varios métodos pararealizar consultas complejas.En cuanto a los cursores, por cada consulta que se realicea la DB, la consulta devolverá un Cursor que apunta a todaslas columnas afectadas por la consulta.
    • Más información
    • Más informaciónTodas las lecturas y ejemplos se basan en ladocumentación oficial de Android.Para mayor información visita el sitio oficial de Android:http://developer.android.com