Generalidades

Jetpack DataStore-Goodbye SharedPreferences | Autor: santosh nisal | julio de 2021

Santoshnisar

En este artículo, aprenderemos sobre lo que se usa para almacenar datos localmente y una nueva solución de almacenamiento en Android Jetpack.

Cuando se introdujo JetPack, proporcionó muchas bibliotecas, lo que facilitó la escritura de código de Android, evitar el código repetitivo, aumentar la productividad, crear aplicaciones de alta calidad, etc.Ahora bien, esta vez nos trae otra gran biblioteca llamada DataStore Según el blog oficial, está destinado a reemplazar SharedPreferences La API tiene varias desventajas.

Almacenamiento de datos Jetpack isegundo Una solución de almacenamiento de datos que le permite almacenar pares clave-valor u objetos escritos mediante búferes de protocolo. DataStore utiliza corrutinas de Kotlin y Flow para almacenar datos de forma asincrónica, coherente y transaccional.

Si está utilizando actualmente SharedPreferences Para almacenar datos, considere migrar a DataStore.

Fuente de la imagen: https://android-developers.googleblog.com/2020/09/prefer-storing-data-with-jetpack.html

Preference DataStore y Proto DataStore

DataStore proporciona dos implementaciones diferentes: Preferences DataStore y Proto DataStore.

  • Almacenamiento de datos de preferencia Utilice claves para almacenar y acceder a datos. Esta implementación no requiere patrones predefinidos ni proporciona seguridad de tipos.
  • Almacenamiento de datos brutos Almacene los datos como una instancia de un tipo de datos personalizado. Esta implementación requiere que defina la arquitectura utilizando búferes de protocolo, pero proporciona seguridad de tipos.

Agregue las siguientes dependencias en el archivo build.gradle para usar el almacenamiento de datos Jetpack.

Utilice DataStore para almacenar pares clave-valor

Suponga que está creando una aplicación para estudiantes que almacena los nombres de los estudiantes ingresados ​​por los usuarios. Luego, cuando el usuario vuelva a abrir la aplicación después de un período de tiempo, podrá ver el nombre ingresado la última vez, porque la aplicación almacenará el nombre ingresado la última vez en el DataStore.

Para ello crearemos una clase AppPreferences Manejaremos todas las preferencias establecidas por el usuario.

AppPreferences.kt
  • Esta AppPreferences La clase necesitará Context Objeto para crear DataStore.
  • Utilice el delegado de propiedad creado por preferencesDataStore Crea una instancia Datastore<Preferences>Llámelo una vez en el nivel superior del archivo Kotlin y luego acceda a él a través de esta propiedad en el resto de la aplicación.
  • Necesita definir una clave para cada string El valor para ahorrar stringPreferencesKey () Función.También necesitas definir el nombre de la clave. name alcance.
  • Podemos crear una función para guardar el nombre del alumno en DataStore. Esta DataStore suministro edit() El método de guardar el valor.Podemos pasar la clave y el valor a MutablePreferences En el lambda final. precaución, edit() La función es una suspend Función.
  • Ahora puede usar el siguiente comando para obtener las preferencias guardadas del almacén de datos datastore.data Devuelve un Flow<Preferences> y con .map Operador que podemos conseguir Flow<String> Al pasar la clave correcta a las preferencias, este es el nombre de nuestro estudiante.

Ahora en su clase de actividad / fragmento o ViewModel, siempre que desee guardar los nombres de los estudiantes en DataStore, Solo necesita llamar a nuestra función de suspensión saveStudentName () desde la corrutina. En el proyecto de demostración, llamé a saveStudentName () haciendo clic en el botón.

Actividad principal.kt

Para obtener el nombre del estudiante guardado del evento DataStore Podemos cambiar para conseguir Flow<String> Y obsérvelo después de cambiar a LiveData .asLiveData().

Actividad principal.kt

Ahora, debido a que hemos revelado el nombre del estudiante como Flow, Cada vez que se actualiza o edita el nombre de un estudiante en el almacén de datos, se enviará un valor y el último nombre ingresado se actualizará en consecuencia y se mostrará en la vista de texto del último nombre ingresado.

LEER  La función de llave de coche digital de Android ahora está en línea

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba