49 votes

Quelle technique de stockage de données Android utiliser ?

La documentation Android propose les options suivantes, mais n'explique pas dans quelles circonstances chacune d'elles est la plus appropriée. Quels sont les avantages et les inconvénients de chaque méthode ? Par exemple, dans quelles conditions SQL serait-il meilleur que les préférences partagées ?

  • Préférences partagées
  • Stockage interne
  • Stockage externe
  • Bases de données SQLite
  • Connexion au réseau

110voto

Devrath Points 2552

Différentes options de stockage dans Android

enter image description here


Fournisseurs de contenu

enter image description here

  • Considérons que les données structurées ajoutées au dispositif à partir de l'application1 sont les suivantes ne sont pas accessibles à une autre application2 présente dans le même dispositif mais la photo de profil ajoutée au dispositif par application1 est disponible pour le site application2 fonctionnant dans le même appareil

  • Considérez le dispositif Android comme une ville, les applications qui s'y trouvent sont les suivantes maisons de la ville, les personnes dans les maisons (applications) sont les données. Maintenant, le fournisseur de contenu est comme un courtier dans la ville (appareil Android). Ce courtier fournit l'accès aux personnes dans la ville pour trouver différentes maisons se référant comme le fournisseur de contenu dans le Android fournit l'accès aux données dans l'appareil pour différentes applications.


Préférences partagées

enter image description here

  • Considérez que j'ai une application, disons une application Face book, que j'utilise pour me connecter à mon compte.

  • Maintenant, la toute première fois que j'entre mon nom d'utilisateur et mon mot de passe pour avoir l'accès à mon compte. Disons que je me déconnecte de l'application une heure plus tard. j'utilise à nouveau la même application Face book pour me connecter à nouveau à mon application.

  • Je dois entrer à nouveau mon nom d'utilisateur et mon mot de passe pour me connecter à mon compte. et j'ai défini un thème pour mon application et d'autres paramètres sur la façon dont mon application dans mon téléphone actuel

  • Ce n'est pas nécessaire parce que je considère que j'utilise mon téléphone pour me connecter à l'application. J'utiliserai donc toujours mon téléphone pour me connecter à nouveau et donc entrer mes informations d'identification encore et encore représente plus de travail. Cela montre que l'application n'est pas conviviale.

  • Les préférences partagées sont très pratiques dans de tels scénarios où je peux utiliser sa fonctionnalité pour partager mes données dans un fichier xml qui existe physiquement dans l'application Android installée sur mon téléphone et qui n'est pas détruit même si l'application est fermée. Ici, nous pouvons sauvegarder les données des préférences de l'utilisateur l'application en cours.

  • Par conséquent, la prochaine fois que j'ouvrirai mon application sur mon téléphone, je pourrai voir les données. automatiquement remplies dans les champs nécessaires et les paramètres sont


Stockage des fichiers

enter image description here

  • Sous Android, nous pouvons utiliser l'espace de stockage du périphérique pour stocker les données dans les fichiers suivants pour les applications. Le type de données implique des choses comme un fichier texte, fichier image, fichier vidéo, fichier audio, etc.

  • Comme le montre la figure, nous pouvons voir qu'il existe deux endroits où nous pouvons faire cela. La première consiste à écrire les fichiers bruts dans les fichiers primaires et secondaires. primaire/secondaire. Une autre façon est d'écrire les fichiers de cache dans le stockage primaire/secondaire.

  • Il existe également une différence entre le stockage des données brutes et celui des données du cache, les données brutes, une fois stockées en mémoire par l'utilisateur, doivent être explicitement être explicitement supprimées par l'utilisateur, sinon elles existeront toujours. Les données du cache stockées en mémoire ne sont pas des données permanentes parce que le car le système les supprime automatiquement s'il sent qu'il manque de mémoire. mémoire.

enter image description here

Stockage interne :

  • Considérons qu'un utilisateur d'une application a stocké des données dans des fichiers internes. interne, alors seul l'utilisateur de cette application a accès à ces données sur le mobile et ces données sont automatiquement supprimées lorsque l'utilisateur l'utilisateur désinstalle l'application. En parlant de cela, la mémoire interne est privée.

  • Le répertoire de stockage interne de l'application est stocké sous le nom de "package". dans un endroit spécial du système de fichiers d'Android.

  • Les autres applications ou les utilisateurs de l'application en cours n'ont pas accès au fichier défini par l'utilisateur. un utilisateur particulier et une application particulière à moins qu'il ne soit explicitement mis à la disposition de l'utilisateur pour un accès en lecture/écriture.

enter image description here


SQLite

enter image description here

  • Sqlite est utilisé pour stocker des données plus structurées localement dans un mobile. où s'exécute l'application Android. Les données structurées impliquent dès ce qui est montré dans la figure comme les informations d'un étudiant sous forme de rangées et de colonnes.

  • Sqlite offre une fonctionnalité similaire à celle de Mysql et oracle mais avec des caractéristiques fonctionnelles limitées. Certaines d'entre elles consistent à exécuter opérations de requête sur les tables. Il y a des fonctionnalités comme la création de vues mais aussi certaines fonctionnalités ne sont pas disponibles comme les procédures stockées.

  • Sqlite est très utile pour stocker des données complexes et volumineuses qui peuvent être être téléchargées une fois et peuvent être utilisées encore et encore jusqu'à ce que l'application soit en cours d'exécution. Lorsque l'application est fermée, la base de données Sqlite est également détruite. également détruite.


Assembler toutes les pièces du puzzle

enter image description here

38voto

Teddy Points 622
  • Préférences partagées sont bons pour stocker ... les préférences d'une application, et d'autres petits morceaux de données. Il s'agit d'une clé de stockage persistante très simple pour quelques types de données : booléen, flottant, int, long et chaîne. Ainsi, par exemple, si mon application comporte un login, je pourrais envisager de stocker la clé de session sous forme de chaîne dans SharedPreferences.

  • Stockage interne est bon pour stocker les données d'application auxquelles l'utilisateur n'a pas besoin d'accéder, car l'utilisateur ne peut pas facilement accéder au stockage interne. Il peut également être utile pour la mise en cache, les journaux et d'autres choses. Tout ce que seule l'application a l'intention de créer, lire, mettre à jour ou supprimer.

  • Stockage externe . Super pour le contraire de ce que je viens de dire. L'application Dropbox utilise probablement un stockage externe pour stocker le dossier Dropbox de l'utilisateur, afin que l'utilisateur puisse accéder facilement à ces fichiers en dehors de l'application Dropbox, par exemple en utilisant le gestionnaire de fichiers.

  • SQLite Les bases de données sont idéales lorsque vous utilisez beaucoup de données structurées et un schéma relativement rigide pour les gérer. En termes simples, SQLite est comme MySQL ou PostgreSQL, sauf qu'au lieu que la base de données agisse comme un démon serveur qui prend ensuite les requêtes des CGI scripts comme php, elle est simplement stockée dans un fichier .db, et accessible et interrogée par une simple bibliothèque dans l'application. Bien que SQLite ne soit pas aussi puissant que les bases de données dédiées, il est très rapide et pratique pour les petites applications, comme les applications Android. J'utiliserais une base de données SQLite si je créais une application pour agréger et télécharger des recettes, car ce type de données est relativement structuré et une base de données permettrait une bonne évolutivité. Les bases de données sont intéressantes car écrire toutes vos données dans un fichier, puis les analyser dans votre propre format propriétaire n'est pas une partie de plaisir. Mais le stockage des données en XML ou JSON ne serait pas si mal.

  • Connexion au réseau fait référence au stockage de données sur le nuage. Les transferts de fichiers et de contenu par HTTP ou FTP via les paquets java.net.* permettent d'y parvenir.

16voto

josephus Points 4865

Préférences partagées est principalement destiné aux paramètres spécifiques à l'application auxquels vous pouvez accéder via votre menu Paramètres - comme les paramètres de l'application. Il est conseillé de garder les choses simples ici - principalement des drapeaux booléens, des chaînes courtes ou des entiers. Les données SharedPreferences persistent au redémarrage de l'appareil et sont supprimées lors de la désinstallation de l'application. Les données sont enregistrées sous la forme d'une paire clé-valeur.

Stockage interne est surtout utilisé pour le stockage de données non persistantes plus importantes. Vous utilisez le stockage interne si vous voulez processus une image, un court clip vidéo, un gros fichier texte, etc. Mais vous ne stockez pas les données traitées dans le stockage interne - sa fonction est plus proche de celle de la RAM d'un processeur. La quantité de mémoire interne disponible pour votre application dépend de l'appareil, mais il est toujours préférable de ne pas dépasser 1 Mo. Les données sont référencées via leur chemin d'accès.

Stockage externe ne fait pas uniquement référence au stockage de la SDCard, mais pour les téléphones haut de gamme, cela peut signifier un stockage interne montable (comme dans le Galaxy Nexus ou le S2). C'est là que vous stockez les gros fichiers vidéo, les images haute résolution et le fichier texte de 20 mégaoctets que vous voulez analyser dans votre application. C'est aussi l'endroit où stocker les données que vous voulez partager entre les appareils si vous changez de carte SD. Les données sont également référencées via leur chemin d'accès.

Bases de données SQLite est l'endroit où vous stockez à peu près tout ce que vous voulez dans une base de données ordinaire - avec l'avantage d'organiser les choses en tables, lignes et colonnes. Il fonctionne mieux avec les éléments que vous voulez afficher dans l'interface utilisateur sous forme de listes - le meilleur exemple serait la grande invention connue sous le nom de CursorAdapter. Les données stockées ici persistent également au redémarrage de l'appareil et sont supprimées lors de la désinstallation de l'application. Vous pouvez également partager les données entre les applications avec sqlite db si vous le connectez à un ContentProvider. Les données sont accessibles à l'aide d'un Curseur où vous pouvez appeler des méthodes comme si vous exécutiez des instructions SQL.

Connexion au réseau n'est pas vraiment une technique de stockage de données, mais peut être un moyen de faire persister des données pour un utilisateur spécifique, à condition que le dispositif soit connecté à l'internet, en utilisant une sorte d'authentification. Vous devez choisir entre le téléchargement de données à chaque fois que l'application en a besoin et une synchronisation unique des données, ce qui vous conduirait à une autre des options de stockage mentionnées ci-dessus.

4voto

Barak Points 12045

Les préférences partagées sont des paires clé/valeur, rien de plus. Ainsi, si vous souhaitez assurer le suivi des étudiants et de leurs résultats aux examens, cela ne fonctionnera pas vraiment.

Une base de données n'est que cela, une base de données. Vous pouvez définir autant de colonnes (et de tables) que vous le souhaitez pour effectuer votre travail.

S'il s'agit de préférences pour votre application, utilisez les préférences partagées (presque toutes les préférences auxquelles je pense peuvent être réalisées de cette façon), s'il s'agit de quelque chose de plus compliqué, utilisez une base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X