Data storage – [PPTX Powerpoint]

  • TALLER DE DESARROLLO DEAPLICACIONES MVILESData Storage Por:Felipe Hernndez R. Twitter: @FelipeDev

Cdigosde ejemplo Cdigos fuentesPara una mejor comprensin de estetaller se hanrealizado proyectos (en eclipse) de ejemplo paracadauno de los tipos de DataStorage, exceptuando el detipoNetworkConnections.En su mayora las aplicaciones imprimenmensajespor consola para visualizar los estados de laaplicacin.Elsiguiente es el enlace a los cdigos fuentescomentadosanteriormente:https://github.com/FelipeDev/Android-Data-StorageSerecomienda revisar los proyectos a medida que seavanza en lapresentacin. Uso de cdigos fuentesPara utilizar los proyectos deltaller se debe clonar elrepositorio Git, o bien descargar losarchivosdirectamente desde el enlace entregado en la slideanteriory copiar los proyectos al workspace deEclipse, una vez dentro deeclipse, se deben importarlos proyectos copiados en el workspace.Tipos dealmacenamiento Android Storage* Shared Preferences*Internal Storage* External Storage* SQLite Databases* NetworkConnections SHARED PREFERENCES Shared preferencesEste tipo dealmacenamiento permite salvar datosde tipo int, float, boolean,long y string. Estos datospersistiran incluso cuando la aplicacinesfinalizada.Para obtener los datos almacenados existen dosmtodos:getSharedPrefereces(); getPreferences(); getSharedPreferences()Estemtodo se debe utilizar cuando se deben llamarmltiples archivos quecontienen la informacin de laspreferencias compartidas. Cadaarchivo es identificado porsu nombre, el cual se debe especificarcomo primerparmetro.Ej:SharedPreferences settings=getSharedPreferences(FILE_NAME,0);boolean silent =settings.getBoolean(«silentMode», false);setSilent(silent);getPreferences()Este mtodo se debe utilizar se necesita slo unarchivo depreferencias para el Activity. Como ste ser elnicoarchivo, no se debe proveer un nombre alinvocarlo.Ej:SharedPreferences settings =getPreferences(0);booleansilent = settings.getBoolean(«silentMode»,false);setSilent(silent); getPreferences()Este mtodo se debeutilizar se necesita slo un archivo depreferencias para elActivity. Como ste ser el nicoarchivo, no se debe proveer un nombreal invocarlo.Ej:SharedPreferences settings=getPreferences(0);boolean silent =settings.getBoolean(«silentMode», false);setSilent(silent); Acercade SharedPreferencesLas preferencias compartidas no sonnicamentepara guardar preferencias de usuario, como porejemplo elringtone que pueda haber seleccionadoel usuario. Si lo que se deseaes almacenarpreferencias de usuario para una aplicacinenparticular, vase PreferencesActivity, lo cual proveeun frameworkpara crear preferencias de usuariolos cuales sern automticamentepersistidos(usando SharedPreferences) INTERNAL STORAGE INTERNALSTORAGEEs posible guardar archivos directamente en elsistema dealmacenamiento interno del dispositivo.Por defecto los archivosguardados en elalmacenamiento interno, son privados a laaplicacinque lo crea, por tanto, las demsaplicaciones no pueden acceder aestos archivos.Cuando el usuario desinstala la aplicacin,losarchivos son eliminados. Creacin y escritura en elalmacenamiento internoPara crear y escribir en archivos creados enelalmacenamiento interno, se hace de la siguienteforma:a) Ejecutarel mtodo openFileOutput() con el nombre del archivo y el modo deoperacin. Esto retorna un FileOutputStream.b) Escribir al archivocon write()C) Cerrar el stream con close() Lectura desdeelalmacenamiento internoPara leer archivos desde el almacenamientointerno, sehace de la siguiente manera:a) Ejecutar el mtodoopenFileInput() con el nombre del archivo y el modo de operacin.Esto retorna un FileInputStream.b) Leer los bytes desde el archivocon read()C) Cerrar el stream con close() Guardar archivos encachSi se desea guardar datos en cach, ms all dealmacenarlos demanera persistente, se debe utilizar elmtodo getCacheDir() paraabrir un objeto de tipo File querepresenta el directorio internodonde una aplicacinpuede guardar archivos de manera temporal. Noserecomienda utilizar ms de 1mb dealmacenamientotemporal.Importante: Cuando el dispositivo tiene pocoespaciode almacenamiento interno, Android puede eliminarlosarchivos en cach para recuperar espacio. Otros mtodostilesgetFilesDir(): Obtiene la ruta absoluta de un archivo enelsistema de archivos donde los archivos internossonalmacenados.getDir(): Crea (o abre si ya existe) un directoriodentrodel espacio del almacenamiento interno.deleteFile(): Eliminaun archivo en el almacenamientointerno.fileList(): Devuelve unarreglo con los archivosguardados por la aplicacin (actual) en elsistema dealmacenamiento interno EXTERNAL STORAGE EXTERNALSTORAGETodo dispositivo compatible con Android soportaunalmacenamiento externo compartido quepuede ser utilizado paraalmacenar archivos. Puedeser un medio removible (como una tarjetaSD) o unalmacenamiento interno (no removible). Losarchivosalmacenados en un almacenamientoexterno pueden ser ledos por todose inclusomodificados por el usuario cuando ste habilitaelalmacenamiento masivo USB para transferirarchivos a sucomputador. Precauciones al utilizaralmacenamiento externoLosarchivos guardados en un medio dealmacenamiento externo puedendesaparecer si elusuario monta este medio en un computadorosimplemente lo desmonta del dispositivo, y no hayseguridadimpuesta a los archivos que se escribenen un medio dealmacenamiento externo.Todas las aplicaciones pueden leer losdatosalmacenados en este tipo de almacenamiento yclaro los usuariospueden eliminar estos datos. Como usar External StorageAntes dehacercualquier cosa con elalmacenamiento externo, se debe llamar almtodogetExternalStorageState() para comprobar si existe algnmediodisponible.El medio puede devolver diferentes estadosespecificadosen:http://developer.android.com/reference/android/os/Environment.htmlEluso de los diferentes estados, sirve para notificaral usuarioacerca de posibles anomalas con sumedio externo. Crear archivos enExternal StorageSi se est utilizando la api de nivel 8 (OS 2.2)osuperior, se debe utilizar el mtodo getExternalFileDir()para abrirun archivo que represente el directoriodonde se almacenarn losarchivos. Este mtodorecibe como parmetro el tipo de directorio quesedeseacrear, como DIRECTORY_MUSIC oDIRECTORY_PICTURES.Alespecificar el tipo de directorio nos aseguramos queel scanner demedios de Android categorizarcorrectamente nuestros archivos y/odirectorios. Crear archivos en External StorageSi se est utilizandola api de nivel 7 (OS 2.1) oinferior, se debe utilizar elmtodogetExternalStorageDirectory() para abrir un archivoquerepresente el directorio raz del almacenamientoexterno. Luego sedebn escribir los datos en elsiguiente directorio:/Android/data/filesDonde es el nombre del paquete denuestra app,por ejemplo: cl.mobdev.app Grabar archivos cach en ExternalStorageSi se est utilizando la api de nivel 8 (OS 2.2) osuperior,se debe utilizar el mtodo getExternalCacheDir()para abrir unarchivo que represente el directoriotemporal donde almacenar losarchivos en sistemadealmacenamiento externo.Si se est utilizando laapi de nivel 7 (OS 2.1) oinferior, se debe utilizarelmtodogetExternalStorageDirectory() y seguir los mismos pasosque enla diapositiva anterior. ImportanteSi tenemos un archivo de audio,imagen o video, elscanner de medios de Android podrareconocernuestros archivos multimedia y agregarlos a laslistas quenombren este tipo de archivos.Para evitar que los archivosagregados por nuestraapp aparezcan en las listas de otrasaplicaciones,se debe incluir un archivo vaco de nombre.nomediadentro del directorio de los archivos.. NetworkConnectionsNETWORK CONNECTIONSSi tenemos conexin a una red local ointernet,podemos almacenar y obtener nuestrosarchivos o datos mediante unservicio web.Para utilizar este tipo de almacenamiento sedebeutilizar las clases correspondientes ubicadas enlospackages:java.net.*;Android.net.*; Basesde datos BASES DEDATOSAndroid provee total soporte para bases de datosSQLite.Cualquier base de datos creada, seraccesible por su nombre porcualquier clase dentrode nuestra app, pero no podr ser accedidadesdefuera de nuestra app.Android provee de una herramienta paralaadministracin de bases de datos SQLite, llamadasqlite3 la quepermite navegar entre tablas decontenido y ejecutar comandos SQL enbases dedatos SQLite. CREAR BASES DE DATOSPara crear una nueva basede datos SQLite ennuestra app, se recomienda crear una subclasedeSQLiteOpenHelper() y sobre-escribir el mtodo onCreate(), enelcual se puede ejecutar comandos de tipo SQL paracrear tablas en labase de datos.Se puede obtener una instancia de nuestrapropiaimplementacin de SQLiteOpenHelper() usando unconstructorpreviamente definido. Leer y escribir registros en la DBParaescribir registros dentro de la base de datos, se debeutilizar elmtodo getWritableDatabase(), para leer datos de labase de datos sedebe utilizar getReadableDatabase(). Ambosdevolvern un objeto detipo SQLiteDatabase que representa labase de datos y provee mtodospara ejecutar operacionessobre ella.Para ejecutar consultas a labase datos es posible realizarlasmediante el mtodo query(), el cualacepta varios parmetros deconsulta como la tabla a consultar,seleccin, columnas, etc. Consultas complejas y cursoresParaconsultas complejas como aquellas que requierendar alias a lascolumnas, se debe utilizar un objeto de tipoSQLiteQueryBuilder elcual proveer de varios mtodos pararealizar consultas complejas.Encuanto a los cursores, por cada consulta que se realicea la DB, laconsulta devolver un Cursor que apunta a todaslas columnasafectadas por la consulta. Ms informacin Ms informacinTodas laslecturas y ejemplos se basan en ladocumentacin oficial deAndroid.Para mayor informacin visita el sitio oficial deAndroid:http://developer.android.com

Publicaciones Similares