Stockage local avec SharedPreferences

Objectif : Apprendre à utiliser SharedPreferences pour stocker des données simples et persistantes.

SharedPreferences

Pourquoi SharedPreferences ?

  • Stocker des paires clé-valeur simples (nom, email, booléens, etc.)
  • Données persistantes entre les sessions de l’application
  • Automatique : les données sont sauvegardées dans un fichier XML
  • Utilisé pour des préférences, des réglages, ou de petites données utilisateur
SharedPreferences

Quand utiliser SharedPreferences ?

✅ Bon choix pour :

  • Préférences d'affichage
  • Thème sombre activé/désactivé
  • Dernière page visitée

❌ Mauvais choix pour :

  • Données complexes (ex: liste d’objets)
  • Données volumineuses (ex: images, documents)
  • Bases de données relationnelles
  • Données pouvant être consultées sur différents dispositifs
SharedPreferences

Utilisation de base

val prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE)

// Écriture
prefs.edit().putString("prenom", "Alice").apply()

// Lecture
val prenom = prefs.getString("prenom", "Anonyme")
  • apply() : enregistre en asynchrone (recommandé)
  • commit() : enregistre en synchrone, retourne un booléen
SharedPreferences

Méthodes disponibles

  • putString("clé", "valeur")
  • putInt("clé", 42)
  • putBoolean("clé", true)
  • putFloat("clé", 3.14f)
  • putLong("clé", 123456789L)

Lecture équivalente avec :

  • getString, getInt, getBoolean, etc.
SharedPreferences

Fichier XML généré

  • Le fichier est enregistré dans :
/data/data/<package_name>/shared_prefs/prefs.xml
  • Le fichier peut être consulté sur un appareil rooté ou via Android Studio (Device File Explorer)
SharedPreferences

apply() vs commit()

Méthode Description Avantages
apply() Asynchrone, ne bloque pas Plus rapide, recommandé
commit() Synchrone, retourne booléen Peut garantir l'enregistrement immédiat

Note : apply() ne retourne rien mais est suffisant dans la majorité des cas.

SharedPreferences

Bonnes pratiques

  • Utiliser MODE_PRIVATE par défaut

  • Préférer apply() à commit()

  • Grouper les écritures avec apply()

  • Ne pas stocker d’objets ou de fichiers binaires

  • Supprimer les clés obsolètes avec .remove("clé")

SharedPreferences

En résumé

  • SharedPreferences permet de sauvegarder des préférences utilisateur de façon simple et persistante.
  • Il est adapté aux données primitives : chaînes, entiers, booléens.
  • L’accès est rapide, sécurisé (fichier privé), et facile à mettre en œuvre.
SharedPreferences