Preferencia de almacenamiento de datos (forma genérica) | de Srikrishna Sakunia | diciembre 2022

Uso más general/escalable del almacenamiento de datos de preferencia.Jetpack de Android al espacioHola, bienvenidos a mi artículo. Me gustaría compartir mis dos centavos sobre Preference Datastore y cómo usarlo en un método genérico.

Contenidos

¿Qué es el almacén de datos?

Primero, comprendamos Datastore. Entonces, solíamos tener dos formas de almacenar datos en Android:

  1. Preferencia compartida.
  2. Espacio (construido en SQLite)

Ahora, Shared Preference se usó para almacenar una pequeña cantidad de datos en formato de par clave-valor, mientras que Room se usó para almacenar una gran cantidad de datos en un formato estructurado. Conjunto de datos creado para almacenar datos. , y . Datastore se basa en Kotlin Coroutines y Flow, que son un gran partidario de Kotlin Programación. Hay dos tipos de DataStore: –

  1. Se utiliza para almacenar datos en formato clave-valor (al igual que en Preferencia compartida). No requiere un esquema predefinido como SQL o proto-DataStore. No proporciona seguridad de tipo.
  2. Se utiliza para almacenar datos en un formato de datos definido por el usuario (tipos de datos complejos/definidos por el usuario). * El esquema debe definirse con Protobuffers. * Proporciona tipo de seguridad.

Para implementar Preference Datastore en nuestro proyecto, necesitamos agregar algunas dependencias en nuestro Archivo de nuestra aplicación: // Para la implementación preferida de Datastore «androidx.datastore:datastore-preferences:1.0.0». -coroutines-android:1.6.4’//Para el ciclo de vida si no se agregó antesimplementación «androidx.lifecycle:lifecycle-runtime-ktx:2.2.0-alpha02″implementación «androidx.lifecycle:lifecycle-livedata-ktx:2.2.0 – alpha02″Asegúrese de usar siempre las últimas dependencias estables para una mejor experiencia.

implementación de código

Esta será nuestra estructura de archivos. Nómbrelo como «Local» para guardarlo localmente en nuestro dispositivo. Creamos nuestro archivo de almacenamiento de datos de preferencias en el archivo de datos de nuestro proyecto. Consta de tres archivos principales, una interfaz, un objeto y una clase auxiliar. Veamos la implementación una por una.Vamos a crear una nueva clase de interfaz que contendrá todas nuestras funciones de suspensión. El papel de esta interfaz es que podemos implementar nuestras funciones de una manera más estructurada. Contiene funciones para GET, PUT, REMOVE y REMOVE ALL. Se pueden realizar operaciones CRUD. Pero puede crear sus funciones en función de sus necesidades. Ahora hemos declarado dos funciones GET aquí. suspender la diversión getPreference(clave: Preferencias.Clave,Valor por defecto: T):Flujosuspender la diversión getFirstPreference(clave: Preferencias.Clave,valor predeterminado: T): Ambos tienen la misma función, es decir, recuperar los datos del almacén de datos. Pero el tipo de retorno de la primera función es que devuelve un flujo/flujo de datos. Mientras que el segundo solo devuelve el valor de Data. Cuando hablamos un poco sobre el flujo, nos referimos a un flujo de datos. Ahora, cuando el valor cambia dinámicamente, lo mismo se refleja en la interfaz de usuario. Ahora no queremos que suceda en todas partes, especialmente cuando se muestra un nombre a un usuario o se verifica un valor. Para esto usamos la segunda función, que devuelve solo T.

Objeto PreferenceDataStoreConstants

Esta es una clase de objeto cuyo trabajo es almacenar el nombre de nuestra variable junto con el tipo de datos. Pero aquí hay un giro. No lo escribimos como de costumbre: val name:String = «Android Dev» En su lugar, lo escribimos de la siguiente manera: val STRING_KEY = stringPreferencesKey(«STRING_KEY»)Concatenamos el tipo de datos en minúsculas antes de «PreferenceKey()», como («nombre_de_variable»), («nombre_de_variable») etc.

Clase PreferenceDataStoreHelper

Vayamos al final comercial de implementar nuestra clase de ayuda DataStore que almacena y recupera datos para nosotros. Lo primero que tenemos que hacer es crear nuestro DataStore: private val Context.dataStore by preferencesDataStore(name=»PreferenceDataStore») Esta línea debe escribirse fuera de HelperClass. Ahora definamos nuestras funciones y veamos su implementación: Básicamente, así es como podemos usar Preference Datastore de una manera que nos permita ser más generales y agregar/eliminar nuevas claves no será una tarea agitada en comparación con la forma antigua y definida.

Implementación para almacenar/recuperar datos.

Ahora que hemos implementado todo el DataStore junto con su clase auxiliar, veamos cómo se almacenan y recuperan los datos. Debido a que estas funciones son asincrónicas, debemos usarlas dentro del alcance de las corrutinas. En general, todas las funciones relacionadas con DataStore deben ser asíncronas. Tenemos dos opciones para llamar a estas funciones desde ViewModel (la forma recomendada) o desde Activity (la forma no tan recomendada). Para ViewModel usamos Funciona de la siguiente manera: Demostración de implementación de ViewModelPara Actividad/Fragmento, usamos funciona de la siguiente manera: Demostración de implementación de actividad ¡Eso es un resumen, amigos! A continuación, tal vez veamos cómo se almacenan los datos cifrados en el almacén de datos de preferencia. Hasta entonces, ¡gracias a todos y feliz programación!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.