0Pricing
Android Academy · Leçon

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 que commit() (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

  1. Collections Kotlin
  2. Bases de RecyclerView
  3. Événements de clic dans RecyclerView
  4. SharedPreferences
  5. Préférences DataStore
  6. Adaptateurs et DiffUtil
← Retour à Android Academy