java - tutorial - manejo de archivos en android studio
¿Qué técnica de almacenamiento de datos de Android usar? (4)
Diferentes opciones de almacenamiento en Android
Proveedores de contenido
Tenga en cuenta que la información estructurada agregada al dispositivo desde la aplicación1 no es accesible para otra aplicación2 presente en el mismo dispositivo, pero la foto de perfil agregada al dispositivo por la
application1
está disponible para laapplication2
ejecuta en el mismo dispositivoConsidere el dispositivo Android como una ciudad, las aplicaciones en él son las casas en la ciudad, las personas en las casas (aplicación) son los datos. Ahora el proveedor de contenido es como un intermediario en la ciudad (dispositivo Android). Este intermediario brinda acceso a las personas de la ciudad para encontrar diferentes casas que se refieren, ya que el proveedor de contenido en el dispositivo Android brinda acceso a los datos en el dispositivo para diferentes aplicaciones.
Preferencias compartidas
Considere que tengo una aplicación que dice una aplicación Face book que uso para iniciar sesión en mi cuenta.
Ahora, la primera vez que ingreso mi nombre de usuario y contraseña para acceder a mi cuenta. Digamos que cierro la sesión de la aplicación una hora más tarde. Uso la misma aplicación Face Book para volver a iniciar sesión en mi aplicación.
Tengo que ingresar el nombre de usuario y la contraseña nuevamente para iniciar sesión en mi cuenta y establecer un tema para mi aplicación y otras configuraciones sobre cómo se ve mi aplicación en mi teléfono actual
Esto no es necesario porque considero que estoy usando mi teléfono para iniciar sesión en la aplicación. Así que siempre usaré mi teléfono para iniciar sesión una y otra vez, así que ingresar mis credenciales una y otra vez es más trabajo muestra que no es una aplicación fácil de usar
Preferencias compartidas es muy útil en tales escenarios donde puedo usar su función para compartir mis datos en un archivo xml que físicamente existe en la aplicación de Android instalada en mi teléfono que no se destruye aunque la aplicación esté cerrada. Aquí podemos guardar los datos de preferencias del usuario de la aplicación actual.
Como resultado, la próxima vez que abra mi aplicación en mi teléfono puedo ver que los datos se rellenan automáticamente en los campos necesarios y la configuración es
Almacenamiento de archivos
En Android podemos usar el espacio de almacenamiento del dispositivo para almacenar los datos en él para las aplicaciones. El tipo de datos involucra cosas tales como un archivo de texto, archivo de imagen, archivo de video, archivo de audio, etc.
Como se ve en la figura, como podemos ver, hay dos lugares donde podemos hacer esto. Una forma es escribir los archivos sin procesar en el almacenamiento primario / secundario. Otra forma es escribir los archivos de caché en el almacenamiento primario / secundario.
También existe una diferencia entre almacenar los datos sin procesar y los datos del caché, los datos sin procesar una vez almacenados en la memoria por el usuario tienen que ser explícitamente eliminados por el usuario explícitamente, de lo contrario existirían hasta entonces. Los datos de caché almacenados en la memoria no son datos permanentes porque el sistema los elimina automáticamente si siente que hay poca memoria.
Almacenamiento interno:
Considere que un usuario en una aplicación tiene datos almacenados en el almacenamiento interno, entonces solo ese usuario de esa aplicación tiene acceso a esa información en el móvil y esa información se elimina automáticamente cuando el usuario desinstala la aplicación. Hablando de qué memoria interna es privada.
El directorio de almacenamiento interno de las aplicaciones se almacena utilizando el nombre del paquete en un lugar especial en el sistema de archivos de Android.
Otras aplicaciones o usuarios de la aplicación actual no tienen acceso al archivo establecido por un usuario en particular y una aplicación en particular a menos que esté explícitamente disponible para el usuario para el acceso de lectura / escritura.
SQLite
Sqlite se utiliza para almacenar datos más estructurados localmente en un dispositivo móvil donde se ejecuta la aplicación de Android. Los datos estructurados son los que se muestran en la figura como la información de un alumno en forma de filas y columnas.
Sqlite ofrece una funcionalidad similar a Mysql y Oracle, pero con funciones funcionales limitadas. Algunas de las cosas implican realizar operaciones de consulta en tablas. Sin embargo, hay características como la creación de vistas, pero también algunas características no están disponibles, como el procedimiento almacenado.
Sqlite es muy útil para almacenar datos complejos y grandes que se pueden descargar una vez y se pueden usar una y otra vez hasta que se ejecute la aplicación. Cuando se cierra la aplicación, la base de datos sqlite también se destruye.
Juntando todas las piezas
La documentación de Android tiene las siguientes opciones a continuación, pero no explica para qué circunstancias es mejor cada una. ¿Cuáles son los pros y los contras de cada método? Por ejemplo, ¿en qué condiciones sería SQL mejor que las Preferencias compartidas?
- Preferencias compartidas
- Almacenamiento interno
- Almacenamiento externo
- Bases de datos SQLite
- Conexión de red
Las preferencias compartidas son pares clave / valor, nada más. Entonces, si desea realizar un seguimiento de, digamos, los estudiantes y su puntaje en el examen, realmente no funcionará bien para eso.
Una base de datos es solo eso, una base de datos. Puede definir tantas columnas (y tablas) como necesite para realizar el trabajo.
Si se trata de preferencias para su aplicación, use preferencias compartidas (casi cualquier preferencia que se me ocurra se puede hacer de esa manera), si es algo más complicado, use una base de datos.
SharedPreferences es principalmente para la configuración específica de la aplicación a la que puede acceder a través del menú Configuración, como la configuración de la aplicación. Es una buena idea mantener todo simple aquí, principalmente indicadores booleanos, cadenas cortas o enteros. Los datos de SharedPreferences persisten en el reinicio del dispositivo y se eliminan junto con la desinstalación de la aplicación. Los datos se guardan como un par clave-valor.
El almacenamiento interno se usa principalmente para un almacenamiento de datos no persistente más grande. Puede utilizar el almacenamiento interno si desea procesar una imagen, un video clip corto, un archivo de texto grande, etc. Pero no almacena los datos procesados en el almacenamiento interno; su función es más parecida a la RAM de una CPU. La cantidad de almacenamiento interno disponible para su aplicación depende del dispositivo, pero siempre es una buena idea mantener algo por debajo de 1MB. Los datos se referencian a través de su ruta de archivo.
El almacenamiento externo no solo hace referencia al almacenamiento de la tarjeta SD, pero para los teléfonos de gama más alta, esto puede significar almacenamiento de montaje interno (como en el Galaxy Nexus o S2). Aquí es donde almacena los archivos de video grandes, las imágenes de alta resolución y el archivo de texto de 20 megabytes que desea analizar en su aplicación. Este es también un lugar para almacenar datos que desea compartir en todos los dispositivos si intercambia tarjetas SD. Los datos también se referencian a través de su ruta de archivo.
Las bases de datos SQLite almacenan prácticamente todo lo que desee en una base de datos normal, con la ventaja de organizar las cosas en tablas, filas y columnas. Funciona mejor con las cosas que desea que aparezcan en la UI como listas; el mejor ejemplo sería la gran invención conocida como CursorAdapter. Los datos almacenados aquí también persisten en el reinicio del dispositivo y se eliminan con la desinstalación de la aplicación. También puede compartir datos entre aplicaciones con sqlite db si lo conecta a ContentProvider. Se accede a los datos utilizando un Cursor , donde puede llamar a los métodos como si estuviera ejecutando sentencias SQL.
La conexión de red no es realmente una técnica de almacenamiento de datos, pero puede ser una forma de datos persistentes para un usuario específico siempre que el dispositivo esté conectado a Internet, utilizando algún tipo de autenticación. Debe equilibrarse entre la descarga de datos cada vez que la aplicación lo necesite, o tener una sincronización de datos única, lo que finalmente llevaría a otra de las opciones de almacenamiento mencionadas anteriormente.
- Las preferencias compartidas son buenas para almacenar ... las preferencias de una aplicación y otros pequeños bits de datos. Es un almacén de claves de cadena persistentes realmente simple para algunos tipos de datos: booleano, flotante, int, largo y cadena. Entonces, por ejemplo, si mi aplicación tuvo un inicio de sesión, podría considerar almacenar la clave de sesión como una cadena dentro de SharedPreferences.
- El almacenamiento interno es bueno para almacenar datos de la aplicación a los que el usuario no necesita acceder, porque el usuario no puede acceder fácilmente al almacenamiento interno. Posiblemente bueno para el almacenamiento en caché, registros, otras cosas. Cualquier cosa que solo la aplicación tenga la intención de Crear Leer Actualizar o Eliminar.
Almacenamiento externo Genial por lo contrario de lo que acabo de decir. La aplicación Dropbox probablemente usa almacenamiento externo para almacenar la carpeta Dropbox del usuario, de modo que el usuario tenga fácil acceso a estos archivos fuera de la aplicación Dropbox, por ejemplo, utilizando el administrador de archivos.
Las bases de datos SQLite son geniales siempre que va a utilizar una gran cantidad de datos estructurados y un esquema relativamente rígido para su gestión. Dicho en términos simples, SQLite es como MySQL o PostgreSQL, excepto que en lugar de que la base de datos actúe como un daemon servidor que luego toma consultas de los scripts CGI como php, simplemente se almacena en un archivo .db y se accede y consulta a través de una biblioteca simple dentro de la aplicación. Aunque SQLite no puede escalar casi tan grande como las bases de datos dedicadas, es muy rápido y conveniente para aplicaciones más pequeñas, como aplicaciones de Android. Utilizaría un DB SQLite si estuviera haciendo una aplicación para agregar y descargar recetas, ya que ese tipo de datos está relativamente estructurado y una base de datos permitiría escalar bien. Las bases de datos son agradables porque escribir todos sus datos en un archivo y luego analizarlos en su propio formato propietario no es divertido. Por otra parte, almacenar datos en XML o JSON no sería tan malo.
La conexión de red se refiere al almacenamiento de datos en la nube. El archivo HTTP o FTP y las transferencias de contenido a través de los paquetes java.net. * Lo hacen posible.