• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 15/04/2019

Comprenez les différents moyens de stocker des données sur Android

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction

Dans ce cours dédié au stockage sur Android, nous allons étudier ensemble les différentes manières d'enregistrer (ou de faire persister) du contenu dans le téléphone de nos utilisateurs, de manière 100 % hors-ligne, c'est-à-dire sans avoir besoin d'internet !

Ainsi, nous allons découvrir les différents moyens que propose Android pour sauvegarder les données de notre application sur le téléphone de nos utilisateurs.

1. Les "Shared Preferences"

Dans le premier cours du parcours Android, nous avons déjà abordé les SharedPreferences, qui sont un moyen de stocker des données primitives et simples : en somme, vous stockez uniquement des variables (valeurs), que vous récupérerez par la suite grâce à un identifiant unique (clé).

On appelle ce type de stockage le stockage par Clé/Valeur. Les variables (et leurs clés correspondantes) seront stockées automatiquement dans un fichier XML directement sur le téléphone de l'utilisateur. Ce fichier pourra être défini en mode  PRIVATE  pour n'autoriser l'accès à son contenu qu'à notre application, ou  PUBLIC  si l'on souhaite que d'autres applications puissent y accéder.

Les Shared Preferences
Stockage utilisant les Shared Preferences

2. Les bases de données

Afin de stocker des données structurées, Android vous offre nativement la possibilité d'utiliser une base de données de type SQLite. Ce type de stockage vous permettra d'organiser et faire persister de grosses quantités de données structurées, directement sur le téléphone de l'utilisateur, et manipulables grâce au langage SQL.

Nous parlerons plus précisément de SQLite et de son implémentation sur Android (avec Room) dans la deuxième partie de ce cours... :) 

Base de données SQL
Stockage utilisant une base de données

3. Le stockage Interne et Externe

Afin de supporter le stockage de données sous forme de fichiers (photos, vidéos, PDF, etc...), les périphériques Android disposent de deux espaces de stockages : l'espace de stockage dit "Interne" et l'espace de stockage dit "Externe".

Ces noms assez communs proviennent de l'époque où la plupart des périphériques Android possédaient à la fois une mémoire interne non volatile physique et une mémoire amovible telle qu'une carte SD par exemple. Aujourd'hui, la mémoire amovible tend à disparaître, et énormément de périphériques divisent dorénavant leur espace de stockage physique en partitions séparées : une partition pour la mémoire interne et une autre pour la mémoire externe.

Donc ces deux espaces de stockage existent toujours, non ? Même si le périphérique ne dispose d'aucun port pour des mémoires amovibles comme la carte SD ? :)

Exactement ! :D D'ailleurs, il existe quelques différences entre ces deux espaces de stockage :

 

STOCKAGE INTERNE

STOCKAGE EXTERNE

Disponibilité

Les fichiers stockés sur cet espace seront toujours disponibles.

Les fichiers stockés sur cet espace ne seront PAS TOUJOURS disponibles. En effet, ce stockage peut être retiré à tout moment par l'utilisateur (carte SD ou clé USB).

Accessibilité

Les fichiers stockés sur cet espace ne seront accessibles QUE par votre application.

Les fichiers stockés sur cet espace seront accessibles par TOUT LE MONDE. Vous n'avez donc aucun contrôle dessus.

Durée de vie

Quand l'utilisateur désinstalle votre application, les fichiers seront automatiquement supprimés de cet espace de stockage.

Quand l'utilisateur désinstalle votre application, les fichiers ne seront PAS supprimés de cet espace de stockage (sauf si vous l'avez explicitement défini).

Quelques mots sur l'espace de stockage INTERNE...

Par défaut, les fichiers stockés dans l'espace de stockage interne sont privés et ne seront accessibles QUE par votre application. Ils ne seront dès lors pas visibles par les autres applications ou par l'utilisateur lui-même (à moins que ce dernier possède un téléphone avec un accès root... :pirate:).

L'espace de stockage interne peut également être utilisé si vous souhaitez enregistrer des données temporairement, dans un dossier spécial dédié au cache. Ainsi, si jamais le téléphone de votre utilisateur est à court d'espace de stockage (ou si un logiciel de nettoyage comme Clean Master passe par là... ;)), le contenu de ce dossier sera automatiquement effacé pour libérer un peu d'espace.

Quelques mots sur l'espace de stockage EXTERNE...

Les fichiers stockés dans l'espace de stockage externe sont à considérer comme étant publics et accessibles par tout le monde... :waw: 

On y retrouve d'ailleurs les dossiers publics "Documents", "Téléchargements" ou encore "Musique". Vous n'avez donc aucun contrôle sur les fichiers enregistrés sur cet espace de stockage. Vous pourrez simplement les définir comme  PUBLIC  (le fichier ne sera pas effacé quand l'utilisateur désinstallera votre application) ou  PRIVATE (le fichier sera effacé quand l'utilisateur désinstallera votre application).

Stockage
Stockage Interne et Externe

Présentation de l'application SaveMyTrip

Présentation de l'application SaveMyTrip
Présentation de l'application SaveMyTrip

SaveMyTrip est la mini-application que nous développerons tout au long de ce cours. Son objectif est de pouvoir organiser facilement vos futurs voyages d'aventuriers, grâce à son fantastique carnet de voyage intégré ainsi qu'à sa liste interactive de choses à faire, le tout accessible de manière 100 % hors-ligne, forcément ! :p

D'ailleurs, téléchargez maintenant cette mini-application SaveMyTrip presque vierge, à quelques fichiers près :

  • Fichiers de ressources : Les fichiers de ressources colors.xml, dimen.xml, strings.xml et styles.xml sont déjà pré-configurés.

  • Fichiers de layout : Afin d'alléger le code présent au sein des chapitres, le design en XML des 3 écrans de l'application a déjà été réalisé. N'hésitez pas à les consulter pour vous en imprégner.

  • Classes d'activités : La classe BaseActivity, ainsi que les classes d'activités MainActivity, TripBookActivity et TodoListActivity ont déjà été créées.

  • Classe utilitaire : La classe ItemClickSupport servant à gérer plus facilement le clic sur la RecyclerView a été également créée. Nous l'avons déjà vue dans ce cours.

  • Librairies externes : Les libraires Glide ainsi que Butterknife ont également été installées via Gradle.

J'ai également choisi d'organiser la structure du projet en fonctionnalités, plutôt qu'en MVC. Cela ne change cependant pas le fait que notre architecture restera en MVC... ;)

Le but de ce cours est de se concentrer sur la manière dont nous stockons des données sur Android, et non sur la création d'interface graphique que vous devez à présent maîtriser. C'est d'ailleurs pour cette raison que nous ne partons pas d'une application totalement vierge... :soleil:

Et c'est tout ! Lancez l'application SaveMyTrip. Le résultat devrait être le suivant :

Aperçu de la mini-application SaveMyTrip vierge
Aperçu de la mini-application SaveMyTrip vierge

Encore une fois, n'hésitez pas à vous imprégner du code de base déjà réalisé, afin de le comprendre un minimum. Vous allez voir, tout est simple et a été déjà vu dans les précédents cours... :)

Exemple de certificat de réussite
Exemple de certificat de réussite