Le quoi, pourquoi et comment du stockage de données de préférences | par Kashif Mehmood | Août 2021
Qu’est-ce que le magasin de données de préférence ?
Google introduit le Datastore en remplacement des préférences partagées. Datastore est une solution de stockage de données permettant de stocker de petits ensembles de données dans des paires clé-valeur ainsi que des préférences partagées. Cependant, la différence est que le magasin de données utilise kotlin et coroutines et stream pour gérer les opérations de lecture et d’écriture dans des threads séparés. Contrairement aux préférences partagées, vous pouvez obtenir des objets kotlin au lieu de chaînes JSON lors de la lecture des données, ce qui facilite le travail avec les magasins de données par rapport aux préférences partagées.
Qu’allons-nous construire :
si tu veux le code :
Table of Contents
Pourquoi Datastore ?
L’utilisation du stockage de données par rapport aux préférences partagées présente de nombreux avantages, mais voici quelques-uns qui attireront votre attention :
- Les préférences partagées sont synchrones et s’exécutent sur le thread principal, tandis que le stockage des données s’exécute sur un thread séparé, ce qui le rend sûr pour les threads
- L’entreposage de données est relativement facile à utiliser par rapport aux préférences partagées et adopte une approche kotlin précoce.
- API asynchrone pour stocker et lire des données (stream)
- Appel sûr à partir du fil d’interface utilisateur (Dispatchers.IO ci-dessous)
- Les préférences partagées n’avaient aucun mécanisme pour signaler les erreurs, l’absence d’API transactionnelle, tandis que le magasin de données stockait les données de manière asynchrone avec la cohérence et la prise en charge des transactions.
DataStore remplace les SharedPreferences qui corrigent la plupart des lacunes des préférences partagées.
Une autre chose à considérer lors de l’utilisation du stockage de données est qu’il existe deux types de stockage de données
-> Préférences de stockage de données
-> Proto Datastore
quand utiliser quoi? 😕
Il existe une grande différence entre les deux qui vous aide à choisir celui à utiliser pour chaque cas d’utilisation.
-> Proto Datastore fournit une sécurité de type et stocke l’objet qui lui est transmis et génère le schéma basé sur l’objet. Si vous modifiez le schéma, vous devrez reconstruire le projet, ce n’est qu’alors que le magasin de données proto pourra générer le nouveau schéma. Si vous avez des données complexes telles que des objets pouvant être découpés, accédez à la banque de données Proto.
- > Préférences de la banque de données il ne fournit pas de sécurité de type car il stocke les données dans des paires clé-valeur. Si vous avez des données simples qui peuvent être stockées de cette manière, vous devez accéder au stockage de données de préférence. La plupart du temps, nous savons déjà quel est le type d’une variable donnée, il n’y a donc pas besoin de sécurité ici.
Cependant, les deux variantes utilisent des coroutines et des flux pour stocker les données de manière asynchrone avec cohérence et prise en charge des transactions.
Comment utiliser le stockage de données de préférence ?
Passons directement au code :
Étape 1 : Créez une classe qui sera utilisée pour gérer les opérations du magasin de données
nous passons le contexte à cette classe en utilisant l’injection de constructeur car le contexte est nécessaire pour effectuer des opérations de magasin de données.
Étape 2:
l’étape suivante consiste à créer un objet de magasin de données à l’aide d’un délégué. Ce que vous devez prendre en compte, c’est que puisque nous utilisons le magasin de données des préférences, nous devons transmettre les préférences au type de magasin de données, nous devons donc donner un nom au magasin de données.
Étape 3:
Dans cette étape, nous définissons les clés dont nous avons besoin, car les données sont enregistrées dans des paires clé-valeur, nous devons définir les clés dans lesquelles nous voulons stocker nos données. Le magasin de données utilise un type spécial de clés, en commençant par le type de données que vous souhaitez stocker dans la clé ; si vous voulez stocker un int, vous utiliserez simplement
intPreferencesKey (« nom_de_int »)
Étape 4:
Passons à la partie la plus attendue, comme vous pouvez le voir, nous utilisons une fonction de suspension ici, les opérations de la banque de données doivent être effectuées dans une coroutine, car le but de la banque de données était la sécurité des threads et le déplacement de la charge de travail du thread principal vers un fil de fond.
Nous utilisons maintenant le contexte que nous avons transmis à notre classe pour accéder au magasin de données et à sa méthode d’édition, ce qui nous permet d’utiliser les clés que nous avons créées pour stocker les données dans ces clés.
Étape 4:
Tout comme le processus d’écriture est également effectué dans une coroutine et que la banque de données utilise le flux, vous pouvez également utiliser des fonctions courantes telles que filtrer et mapper, lire et écrire des données dans la banque de données est aussi simple que cela.
Étape 5 :
Maintenant, dans MainActivity, vous pouvez l’utiliser comme n’importe quel autre flux.
Il est maintenant temps de se débarrasser des préférences partagées.
Commentaires
Laisser un commentaire