Guardar datos en Android usando la base de datos de Room y el almacenamiento de datos: una guía para principiantes | Autor: Inuwa Ibrahim | Junio de 2021
Si ha estado buscando una forma de almacenar datos sin tener que lidiar con el almacenamiento / bases de datos en línea en Android, bienvenido.
En Android, hay dos formas de proporcionar almacenamiento de datos sin conexión:
1. Base de datos de habitaciones
2. primera opción (Almacén de datos de preferencias y preferencias compartidas).
Ahora bien, ¿cuál es la diferencia?Cuando deberías usar Room Database
Cuando debo usar Preferences
Quieres almacenar una pequeña cantidad oF Datos- primera opción
Ejemplo
– Almacene la elección del usuario del modo nocturno o el modo oscuro en su aplicación
– Guarde el estado cuando el usuario inicia su aplicación por primera vez (se usa para mostrar una pantalla de introducción)
– Almacene el orden de clasificación del usuario de la lista de elementos (de modo que cuando el usuario regrese a la lista, se mantenga el orden de clasificación)
¿Quieres almacenar muchos datos? -Habitación
Ejemplo
-Guardar una lista de canciones que el usuario ha marcado como favoritas (en este caso, se requiere una tabla con columnas)
– Almacene una lista de publicaciones (que pueden contener texto e imágenes), de modo que cuando el usuario no esté conectado, pueda ver el contenido de la base de datos de la sala, que es una tecnología utilizada en la mayoría de las aplicaciones de redes sociales (como Instagram).
Ahora sabe cuándo usar ambos.
Aspectos destacados de este artículo Room Database
con DataStore
En este tutorial, crearemos una aplicación simple que almacena información del usuario (nombre, edad y número de teléfono) en la base de datos de la habitación y utiliza el almacenamiento de datos para retener la pantalla.
Así es como se ve nuestra aplicación final
Después de completar la información y hacer clic ahorrar, Esta es la siguiente pantalla
Este es un video que muestra cómo funciona:
notas: – La arquitectura utilizada en este proyecto es MVVM (modelo de vista de modelo de vista)
- Agregar dependencias
- Configurar la base de datos de la habitación
- Establecer preferencias (almacenamiento de datos)
- Configurar HILT (para inyección de dependencia)
- Configurar el repositorio
- Configurar el modelo de vista
- Establecer vista
- encender
Build.gradle
Archivar y agregar las dependencias necesarias - Vista-
Build.gradle(Project)
conBuild.gradle(App)
Para todas las dependencias utilizadas, marque aquí - Algunas de las dependencias utilizadas son:
Coroutines
– Para operaciones asincrónicasHilt
– Para inyección de dependenciaPreference DataStore
– Para un almacenamiento de datos asincrónico consistenteRoom
– Para almacenamiento de datos fuera de líneaViewBinding
– Se usa para interactuar con la vista.LiveData, ViewModel and LifeCycle Dependencies
- Crear un nuevo paquete →
database
- Crea un nuevo archivo kotlin →
UserDatabase.kt
– La anotación para esta clase es @Database
a Indica que se trata de una base de datos de habitaciones, que incluye usuario Entidad de clase [Table]. Esto versión El número se utiliza para indicar actualizaciones / cambios en la base de datos de la sala.Cuando su modelo o tabla cambie, este número debería aumentar
– Ruta del usuario La clase (Objeto de acceso a datos de usuario) se usa para representar la operación que necesitamos realizar tabla de usuario Por ejemplo, operaciones CRUD (crearemos esta clase pronto)
– llamar de vuelta Se usará para proporcionar dependencias usando Hilt
- Crea otra clase →
User.kt
– Esta clase se utiliza como modelo, representa una tabla en nuestra base de datos, como Anotado con @Entity
- Crea una interfaz
UserDao.kt
– Esta clase contiene todas las operaciones que se pueden realizar en nuestro objeto.
En este tutorial, solo usamos 2 operaciones:Create
-Utilizado para insertar registros en la base de datosDelete
-Utilizado para borrar registros en la base de datos.
Puedes usar cualquier operación en esta clase.
Utilizamos las preferencias para asegurarnos de que la pantalla de actividad (utilizada para completar la información del usuario) solo se muestre cuando el usuario no tiene ningún registro en la base de datos. En su lugar, mostraremos la pantalla de actividad de detalles del usuario.
Así que básicamente configuramos un valor booleano para verificar si el usuario ha guardado sus detalles en la habitación → y luego mostramos la pantalla / actividad apropiada.
- debajo
Preference
Empaquete y cree una interfaz llamadaPreferenceStorage.kt
– Esta interfaz contiene 2 funciones:
1. savedKey()
Se usa para obtener la clave guardada (valor booleano), se usa para verificar si la preferencia se ha guardado
2. setSavedKey()
Se usa para establecer valores para las preferencias (verdadero / falso)
– Crear un nuevo archivo → PreferenceImpl.kt
– Esta clase contiene métodos reescritos que contienen código que utiliza almacenamiento y recuperación de datos asincrónicos Proceso de Kotlin
Para evitar la complejidad, este tutorial se centra más en la integración de la base de datos de Room. Para comprender cómo se integra Hilt con el proyecto, consulte el código fuente completo. [Global
package]
- debajo
Repo
Empaqueta y crea un nuevo archivo →UserRepo.kt
– Esta clase usa corrutinas para realizar las operaciones de base de datos necesarias en subprocesos en segundo plano.Las funciones se explican por sí mismas
Configurar el modelo de vista
– debajo ViewModel
Empaqueta y crea una nueva clase kotlin → UserViewModel.kt
- De manera similar, utilizando una combinación de corutinas kotlin y LiveData o StateFlow, nos suscribimos a actualizaciones en tiempo real de las operaciones que se pueden observar en la vista (UI)
– Crea otra nueva clase → DataStoreViewModel.kt
- Esta clase contiene código para «suscribirse» a las actualizaciones cuando cambian las preferencias, y luego observar en nuestra vista -> este es el beneficio de usar
DataStore
excederSharedPreference
Porque los datos se almacenan de forma asincrónica, coherente y transaccional.
- El proyecto incluye 2 actividades:
actividades principales
Actividad de detalles del usuario
– Verifique el directorio de recursos en el código fuente completo de los dos diseños: activity_main.xml
con activity_user_details.xml
actividades principales
- El codigo es
MainActivity
Es autoexplicativo.
Primero → comprobamos si hay alguna preferencia. Si existe, navegue a la pantalla de actividad de detalles del usuario:checkIfUserHasSavedDetails()
- Cuando algún campo está vacío, hacemos que no se pueda hacer clic en el botón para evitar enviar entradas vacías a la base de datos de la sala: use textWatcher
makeButtonNotClickableAtFirst()
- Haga clic en ‘
Save
‘Botón, guardamos los detalles del usuario en la base de datos de la habitación y actualizamos nuestras preferencias (almacenamiento de datos) estableciendo su valor booleano en’True
‘, y luego enviamos un Intent aUserDetailsActivity
pantalla.
Actividad de detalles del usuario
– Aquí obtenemos los detalles del usuario y lo configuramos en la vista adecuada.
– Haga clic en ‘Clear Record
‘, los registros de usuario se eliminan / eliminan de la base de datos de la habitación y del almacenamiento de datos de preferencias, respectivamente.
Eso es todo por este tutorial. 😺
Enlace para completar el código
https://github.com/ibrajix/RoomDatabase
Envíame un mensaje en Twitter
https://twitter.com/ibrajix