Quel est le bon mécanisme pour stocker des informations dans la base de données SQLite et les préférences partagées?
Pourquoi utiliser des préférences partagées? Pourquoi utiliser sqlite? J'ai essayé de trouver la différence entre eux et quel est le meilleur mécanisme de stockage des données, mais je ne parviens pas à trouver la réponse appropriée sur Google. Veuillez m'aider avec des exemples et des explications.
Réponses:
Cela dépend vraiment des données que vous souhaitez stocker.
SQLite
De grandes quantités de mêmes données structurées doivent être stockées dans une base de données SQLite car les bases de données sont conçues pour ce type de données. Comme les données sont structurées et gérées par la base de données, elles peuvent être interrogées pour obtenir un sous-ensemble de données qui correspond à certains critères en utilisant un langage de requête comme SQL. Cela permet de rechercher dans les données. Bien sûr, la gestion et la recherche de grands ensembles de données influent sur les performances, de sorte que la lecture de données à partir d'une base de données peut être plus lente que la lecture de données à partir de SharedPreferences.
Préférences partagées
SharedPreferences est un magasin de clés / valeurs dans lequel vous pouvez enregistrer des données sous certaines clés. Pour lire les données du magasin, vous devez connaître la clé des données. Cela rend la lecture des données très facile. Mais aussi simple qu'il soit de stocker une petite quantité de données, aussi difficile qu'il soit de stocker et de lire de grandes données structurées car vous devez définir la clé pour chaque donnée, en outre, vous ne pouvez pas vraiment rechercher dans les données sauf si vous avez un certain concept pour nommer les clés.
la source
Cette question a une réponse acceptée, mais je pense qu'il y a plus à dire sur le sujet - concernant la vitesse.
Les SharedPreferences et Sqlite DB d'une application ne sont que des fichiers, stockés dans les répertoires de l'application sur le système de fichiers du périphérique. Si la quantité de données n'est pas trop grande, l'option Sqlite impliquera un fichier plus volumineux et plus compliqué avec plus de temps de traitement pour un accès simple.
Donc, si la nature des données ne dicte pas votre choix (comme expliqué dans la réponse acceptée) et que la vitesse compte, il vaut probablement mieux utiliser SharedPreferences.
Et la lecture de certaines données est souvent sur le chemin critique pour afficher l'activité principale, donc je pense que la vitesse est souvent très importante.
Une dernière réflexion concernant la vitesse et l'efficacité - si vous devez utiliser une base de données Sqlite pour certaines données structurées, il est probablement plus efficace de stocker également les préférences de l'utilisateur dans la base de données afin de ne pas ouvrir un deuxième fichier. Il s'agit d'une considération assez mineure - qui ne vaut probablement la peine d'être prise en considération que si vous devez accéder à la fois aux données structurées et aux préférences avant de pouvoir afficher l'activité principale.
la source
Mon opinion est que ce n'est pas une question de vitesse ou de taille, mais les types d'opérations que vous souhaitez effectuer sur vos données.
Si vous envisagez de faire adhérer , sorte , et d' autres opérations de DB sur vos données vont alors pour SQLite . Un exemple est le tri des données par date.
Si vous souhaitez mapper des valeurs simples (comme int, boolean, String), utilisez Préférences . Les opérations DB ne fonctionneront pas ici et il va sans dire que vous devez avoir toutes les clés. Un exemple est le mot de passe utilisateur ou la configuration de l'application.
La grande tentation d'adopter les préférences est lorsque vous souhaitez l'utiliser pour stocker un POJO aplati (un objet JSON sérialisé) sous forme de chaîne. Avoir un tel besoin est en fait le signe d'utiliser Sqlite. Pourquoi ? Parce que les données complexes nécessiteront éventuellement des opérations complexes. Imaginez récupérer une entrée spécifique qui pourrait être gérée par un simple "SELECT ... WHERE id = 1". Dans le chemin des préférences, ce sera un long processus allant de la désérialisation à l'itération des résultats.
la source
SharedPreferences
clés / valeurs à la fois (par exemple les touchesuser
etpassword
), afin d'être sûr que les deux clés sont désactivées ou les deux sont définies.Pour stocker une énorme quantité de données, optez pour le système de base de données SQLite. Cela permettra également à l'utilisateur de rechercher des données.
D'autre part, pour stocker une petite quantité de données, optez pour les préférences partagées. Dans ce cas, un énorme système de base de données n'est pas nécessaire. Cela permettra à l'utilisateur de simplement enregistrer les données et de les charger.
la source
Oubliez SQLLite, oubliez SharedPreferences, utilisez Realm. Une solution unique pour tout votre stockage local. Vous pouvez utiliser d'anciens objets Java simples comme RealmObjects et y stocker vos données. Vous pouvez convertir les requêtes sélectionnées en fichiers JSON. Pas besoin d'analyser toute la base de données. Vérifiez ce lien: https://realm.io/news/introducing-realm/
la source