Que sont les Shared Preferences et comment sont-elles utilisées dans le développement d’apps ?

Shared Preferences est une fonctionnalité essentielle du développement d’apps mobiles qui permet aux développeurs de stocker et de récupérer de petites quantités de données sous forme de paires clé-valeur. Ce mécanisme est particulièrement utile pour stocker les réglages des utilisateurs, l’état de l’app ou d’autres données de configuration qui doivent être conservées entre les sessions. Shared Preferences fait partie de la plateforme Android et offre un moyen simple et efficace de gérer des données persistantes sans configuration de base de données complexe.

Lorsqu’une app utilise Shared Preferences, les données sont stockées dans un fichier XML situé dans le stockage interne de l’app. L’app peut ainsi accéder rapidement aux données et les mettre à jour, ce qui améliore l’expérience utilisateur en gardant les préférences et réglages de l’utilisateur disponibles et à jour. Shared Preferences est conçu pour être léger et privé à l’app, mais n’est pas chiffré, ce qui en fait un choix idéal pour les données non sensibles dans des apps optimisées à la fois pour les performances et la facilité d’utilisation.

Shared Preferences est un moyen simple et efficace de stocker de petites quantités de données sous forme de paires clé-valeur dans le stockage local de l’appareil, ce qui permet aux applications mobiles de conserver les réglages des utilisateurs et l’état de l’application entre les sessions. Cette fonctionnalité est idéale pour stocker des préférences, comme le thème choisi ou le fait qu’un utilisateur soit connecté, car elle offre une solution légère sans base de données. Les données restent disponibles pour l’application même après sa fermeture ou son redémarrage, ce qui garantit une expérience utilisateur cohérente et personnalisée. Shared Preferences est particulièrement utile lorsqu’un accès rapide à des données persistantes est nécessaire et que les exigences de sécurité sont modérées, car les données ne sont pas chiffrées par défaut ; les mots de passe et autres secrets ne doivent pas y être stockés en clair.

More about SharedPreferences

Shared Preferences est une technologie essentielle du développement d’apps mobiles qui permet un stockage simple et efficace de petites quantités de données sous forme de paires clé-valeur. Cette méthode est idéale pour stocker les réglages des utilisateurs, les préférences de l’application et d’autres données persistantes qui doivent être conservées entre les sessions. Shared Preferences est particulièrement adapté aux cas où l’accès rapide aux données et la facilité d’utilisation sont essentiels, comme les réglages des utilisateurs, l’état de connexion et la configuration de l’app.

Sur le plan technique, Shared Preferences stocke les données dans un fichier XML situé dans le stockage interne de l’app. Lorsqu’une app veut stocker ou récupérer des données, elle interagit avec ce fichier au moyen d’une API qui gère les opérations de lecture et d’écriture. Shared Preferences est ainsi à la fois efficace et facile à mettre en œuvre, ce qui est un grand avantage pour les développeurs qui veulent une gestion légère des données sans opérations de base de données complexes.

Shared Preferences peut être utilisé dans différents scénarios, chacun correspondant à un type de gestion des données :

  1. Stockage des réglages des utilisateurs : Shared Preferences sert à stocker des réglages définis par l’utilisateur, comme le thème, les préférences de notification ou le choix de la langue. Les préférences de l’utilisateur sont ainsi conservées même lorsque l’app est fermée puis rouverte.

  2. Gestion des sessions : Shared Preferences peut servir à stocker des données liées à la session, comme l’état de connexion ou un identifiant utilisateur, ce qui permet à l’app de se souvenir de l’utilisateur entre les sessions sans connexions répétées. Les jetons d’accès et autres secrets doivent être chiffrés avant d’être stockés.

  3. Données de configuration : les applications peuvent stocker des données de configuration nécessaires à leur fonctionnement, comme des réglages de fonctionnalités ou des valeurs par défaut, ce qui permet d’ajuster facilement le comportement de l’app sans modifier le code. Les clés d’API secrètes n’ont pas leur place dans Shared Preferences, car tout ce qui est stocké sur l’appareil peut être extrait.

L’une des plus grandes forces de Shared Preferences est sa simplicité et son efficacité. L’accès facile aux données via des paires clé-valeur permet aux développeurs de mettre en place rapidement un stockage persistant sans se soucier d’opérations de base de données complexes. Les données ne sont en outre accessibles qu’à l’app concernée, ce qui offre un certain degré de sécurité et de confidentialité.

La faible consommation de ressources de Shared Preferences est un autre avantage important. Cette technologie exige un minimum d’espace de stockage et de puissance de calcul, ce qui la rend idéale pour les appareils mobiles, où l’optimisation des ressources est critique. Comme les données sont stockées dans le stockage interne de l’app, elles sont aussi normalement protégées contre l’accès d’autres apps.

Dans la pratique, Shared Preferences est depuis longtemps la méthode standard pour stocker des données utilisateur simples dans les apps Android. Il sert à garder une expérience utilisateur cohérente et personnalisée en mémorisant les préférences et l’état de l’utilisateur. Il sert aussi à optimiser les performances de l’app en réduisant le besoin de requêtes de données et d’appels réseau répétés.

En résumé, Shared Preferences est une technologie qui associe simplicité et efficacité dans une solution qui rend le stockage des données plus intuitif et plus accessible pour les développeurs. Sa capacité à fonctionner sans configuration complexe et avec une consommation de ressources minimale en fait un outil important du développement d’apps moderne, où une gestion des données rapide et fiable est indispensable.

Frequently asked questions about SharedPreferences

Que sont les Shared Preferences et comment fonctionnent-elles dans le développement Android ?

Dans le développement Android, Shared Preferences est un mécanisme de stockage de données simples sous forme de paires clé-valeur, accessibles depuis différents composants d’une application. Cette méthode est idéale pour stocker de petites quantités de données, comme des réglages utilisateur ou la configuration de l’application, qui ne nécessitent pas de base de données.

Lorsqu’une application utilise Shared Preferences, un fichier contenant les données stockées est créé, et ce fichier n’est accessible qu’à l’application qui l’a créé. Les données sont stockées dans un fichier XML situé dans le stockage interne de l’application, ce qui les protège contre l’accès d’autres apps sur un appareil normal, non rooté. Les développeurs peuvent facilement lire et écrire dans ce fichier au moyen de méthodes comme getSharedPreferences(), edit(), putString() et commit() ou apply() pour enregistrer les modifications.

Comparé à des solutions de stockage plus complexes comme les bases de données SQLite, Shared Preferences est bien plus simple et rapide à mettre en œuvre, en particulier lorsqu’il ne faut stocker que des données simples qui ne nécessitent ni stockage structuré ni requêtes complexes. Shared Preferences est donc un choix efficace pour de nombreuses applications qui doivent stocker et récupérer rapidement et facilement de petites quantités de données.

Comment stocker et récupérer des données avec Shared Preferences ?

Les données sont stockées dans Shared Preferences sous forme de paires clé-valeur. On obtient d’abord un objet SharedPreferences, généralement avec getSharedPreferences et un nom de fichier. Pour stocker des données, on ouvre un éditeur avec edit(), on ajoute des valeurs avec des méthodes comme putString ou putBoolean, puis on enregistre les modifications avec apply(), qui écrit de manière asynchrone, ou commit(), qui écrit immédiatement.

Les données sont récupérées avec des méthodes comme getString ou getInt, en précisant la clé et une valeur par défaut utilisée si la clé n’existe pas. Pour les projets Android récents, Google recommande souvent DataStore comme remplaçant plus moderne, mais le principe des clés et des valeurs reste le même.

Quels types de données peut-on stocker dans Shared Preferences ?

Shared Preferences prend en charge des types de données simples : chaînes de texte (String), entiers (int), entiers longs (long), nombres décimaux (float) et valeurs vrai/faux (boolean). Un ensemble de chaînes de texte (Set of String) peut aussi être stocké.

Les objets plus complexes ne peuvent pas être stockés directement. Ils peuvent être convertis en texte, par exemple en JSON, mais cela n’est recommandé que pour de petites quantités de données. Shared Preferences est destiné à des informations légères comme les réglages de l’utilisateur, le thème choisi ou le fait qu’une introduction ait déjà été affichée. Les données plus volumineuses ou structurées ont leur place dans une base de données comme Room ou dans des fichiers.

Quelle est la différence entre Shared Preferences et d’autres méthodes de stockage comme SQLite ?

Shared Preferences stocke de petites quantités de données sous forme de paires clé-valeur dans un fichier sur l’appareil. Il est simple à utiliser mais ne convient pas aux données volumineuses ou complexes, et ne permet pas de véritables requêtes.

SQLite, souvent via Room, est une base de données relationnelle qui peut gérer de grandes quantités de données structurées, des relations entre tables et des recherches avancées. Les fichiers conviennent bien aux images, documents et autres données plus volumineuses. DataStore est la nouvelle alternative de Google à Shared Preferences, avec un accès asynchrone. Le choix dépend de la quantité de données : les réglages dans Shared Preferences ou DataStore, les données structurées dans une base de données.

Comment sécuriser les données stockées dans Shared Preferences ?

Les données de Shared Preferences sont stockées en texte clair dans le dossier privé de l’app. Les autres apps n’y ont normalement pas accès, mais sur un appareil rooté ou via certaines sauvegardes, le fichier peut être lu. Les mots de passe, jetons et autres informations sensibles ne doivent donc pas être stockés sans chiffrement.

Les données sensibles peuvent être chiffrées avant d’être stockées, au moyen de clés conservées dans l’Android Keystore, conçu pour protéger les clés cryptographiques. La bibliothèque Jetpack androidx.security:security-crypto proposait auparavant EncryptedSharedPreferences à cet effet, mais Google a marqué l’ensemble de la bibliothèque, y compris EncryptedSharedPreferences, EncryptedFile et MasterKey, comme obsolète à partir de la version 1.1.0-alpha07 en avril 2025. Google recommande désormais d’utiliser les API classiques de la plateforme, comme SharedPreferences, en combinaison avec une utilisation directe de l’Android Keystore, où une clé est générée avec KeyGenerator et utilisée pour chiffrer les valeurs avant leur stockage. En règle générale, il faut stocker le moins possible d’informations sensibles sur l’appareil.

Quelles limites faut-il garder à l’esprit lors de l’utilisation de Shared Preferences ?

Shared Preferences est destiné à de petites quantités de données simples. De grandes quantités de données peuvent ralentir l’app, car le fichier entier est chargé en mémoire, et une écriture avec commit() sur le thread principal peut faire saccader l’interface utilisateur.

Il n’existe pas de prise en charge intégrée des objets complexes, des relations ou des requêtes, et les données ne sont pas chiffrées automatiquement. Il n’y a pas non plus de sûreté de typage, de sorte qu’une mauvaise clé ou un mauvais type de données n’est découvert qu’à l’exécution de l’app. Les modifications effectuées simultanément depuis plusieurs processus ne sont pas gérées de manière fiable. Pour des besoins plus avancés, DataStore, Room ou un stockage chiffré sont recommandés.

SharedPreferences for dummies

Shared Preferences est une fonctionnalité astucieuse des apps mobiles qui permet à l’app de se souvenir de petites informations que tu lui as données. Imagine un petit carnet dans lequel l’app peut noter ce dont elle doit se souvenir pour plus tard. Par exemple, une app qui retient ton nom d’utilisateur, pour que tu n’aies pas à le taper chaque fois que tu l’ouvres, utilise Shared Preferences pour stocker cette information. C’est un moyen simple et rapide pour les apps de stocker des données qui prennent peu de place et doivent être disponibles la prochaine fois que tu utilises l’app.

Laisser un commentaire