SharedPreferences
Conservez des données simples clé-valeur entre les sessions de l’application avec SharedPreferences. Apprenez à enregistrer, lire et supprimer des préférences.
SharedPreferences est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 6. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 6 leçons au total.
Options de stockage persistant
Android propose plusieurs façons de stocker les données localement :
- SharedPreferences — paires clé-valeur simples (paramètres, jetons)
- Room — base de données SQLite structurée (données complexes)
- DataStore — remplacement asynchrone moderne de SharedPreferences
- Files — opérations d’entrée-sortie sur des fichiers bruts
SharedPreferences convient parfaitement aux paramètres simples et aux préférences utilisateur.
Qu’est-ce que SharedPreferences ?
SharedPreferences stocke les données sous forme de paires clé-valeur dans un fichier XML sur l’appareil. Il prend en charge :
- String
- Int / Long / Float
- Boolean
- Set<String>
Les données persistent entre les redémarrages de l’application et survivent aux changements de configuration (rotation).
Obtenir une instance de SharedPreferences
Deux façons d’obtenir un objet SharedPreferences :
// 1. Named preferences (shared across activities)
val prefs = getSharedPreferences(
"MyAppPrefs", // file name
Context.MODE_PRIVATE // only your app can read it
)
// 2. Activity's default preferences
val prefs = getPreferences(Context.MODE_PRIVATE)Écrire des données
Utilisez un Editor pour écrire les valeurs, puis appelez apply() :
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
prefs.edit()
.putString("username", "alice")
.putInt("login_count", 5)
.putBoolean("dark_mode", true)
.apply() // async, non-blocking — preferred over commit()
// Kotlin extension (cleaner syntax):
with(prefs.edit()) {
putString("username", "alice")
apply()
}Lire des données
Lisez les valeurs par leur clé en fournissant une valeur par défaut si la clé n’existe pas :
val prefs = getSharedPreferences("MyAppPrefs", Context.MODE_PRIVATE)
val username = prefs.getString("username", "Guest") // default: "Guest"
val count = prefs.getInt("login_count", 0) // default: 0
val darkMode = prefs.getBoolean("dark_mode", false) // default: false
println("Hello, $username! Logins: $count. Dark: $darkMode")Exemple pratique : bascule de thème
Enregistrez et restaurez un paramètre de mode sombre :
class SettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsBinding
private lateinit var prefs: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySettingsBinding.inflate(layoutInflater)
setContentView(binding.root)
prefs = getSharedPreferences("settings", MODE_PRIVATE)
// Restore saved state
binding.switchDarkMode.isChecked = prefs.getBoolean("dark_mode", false)
binding.switchDarkMode.setOnCheckedChangeListener { _, isChecked ->
prefs.edit().putBoolean("dark_mode", isChecked).apply()
}
}
}Enregistrer un jeton de connexion
Stockez et vérifiez un jeton d’authentification entre les redémarrages de l’application :
// Save token after login
fun saveToken(token: String) {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.putString("token", token)
.apply()
}
// Check if user is logged in
fun isLoggedIn(): Boolean {
val token = getSharedPreferences("auth", MODE_PRIVATE)
.getString("token", null)
return token != null
}
// Clear on logout
fun logout() {
getSharedPreferences("auth", MODE_PRIVATE)
.edit()
.remove("token")
.apply()
}Supprimer et effacer des données
Supprimez des clés spécifiques ou effacez toutes les données :
.remove("key")— supprimer une entrée.clear()— supprimer tout le contenu du fichier
Appelez toujours .apply() (ou .commit() si vous avez besoin d’une confirmation synchrone).
SharedPreferences ou DataStore
SharedPreferences fonctionne correctement, mais présente certaines limites :
- Les lectures synchrones peuvent bloquer le thread principal
- Il n’offre pas de sécurité des types
Jetpack DataStore est le remplacement moderne : il est entièrement asynchrone, utilise Kotlin Flow et garantit la sécurité des types. Pour les nouveaux projets, préférez DataStore. SharedPreferences reste néanmoins très répandu et parfaitement adapté aux petites quantités de données.
Vérification rapide
Quelle méthode enregistre les données dans SharedPreferences de manière asynchrone, sans bloquer le thread de l’interface utilisateur ?
Récapitulatif : SharedPreferences
Vous pouvez désormais conserver des données simples entre les lancements de l’application :
- Obtenir avec
getSharedPreferences(name, MODE_PRIVATE) - Écrire :
.edit().putString(key, value).apply() - Lire :
.getString(key, defaultValue) - Supprimer :
.edit().remove(key).apply() - Utiliser
apply()(asynchrone) plutôt quecommit()(synchrone)
Cours suivant : architecture des applications — ViewModel, Room et Coroutines.
Questions Fréquemment Posées
La leçon « SharedPreferences » est-elle gratuite ?
Oui — le texte complet de « SharedPreferences » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 6 leçons au total.
Qu'est-ce que j'apprendrai dans « SharedPreferences » ?
Conservez des données simples clé-valeur entre les sessions de l’application avec SharedPreferences. Apprenez à enregistrer, lire et supprimer des préférences. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Android Academy ?
Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 6.
Combien de temps prend la leçon « SharedPreferences » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?
Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Collections Kotlin
- Bases de RecyclerView
- Événements de clic dans RecyclerView
- SharedPreferences
- Préférences DataStore
- Adaptateurs et DiffUtil