Sobes.tech
Junior

Avez-vous travaillé avec DataStore Preferences sur Android?

sobes.tech IA

Réponse de l'IA

Oui, j'ai travaillé.

Preferences DataStore est un équivalent asynchrone de SharedPreferences, inclus dans AndroidX DataStore. Il permet de stocker en toute sécurité des paires clé-valeur simples, en utilisant KSP sur Kotlin Flow ou RxJava3 pour le travail asynchrone et Protobuf/Proto DataStore ou Proto DataStore pour les types de données.

Les principaux avantages de DataStore Preferences par rapport à SharedPreferences:

  • Asynchronie: Fonctionne avec Flow ou RxJava3, évitant de bloquer le thread principal et les problèmes d'ANR.
  • Sécurité: Les opérations atomiques de lecture/écriture garantissent la cohérence des données.
  • Sécurité de type: Avec Protobuf DataStore, on peut définir un schéma de données, évitant ainsi les erreurs de type.
  • Réactivité: Permet de surveiller les changements de données en temps réel.

Exemple d'utilisation de DataStore Preferences avec Kotlin Flow:

// Création de DataStore
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")

// Lecture de données
suspend fun readString(context: Context, key: String): String? {
    val preferencesKey = stringPreferencesKey(key)
    val preferences = context.dataStore.data.first()
    return preferences[preferencesKey]
}

// Écriture de données
suspend fun writeString(context: Context, key: String, value: String) {
    val preferencesKey = stringPreferencesKey(key)
    context.dataStore.edit { settings ->
        settings[preferencesKey] = value
    }
}

Exemple d'utilisation de KSP pour créer un accès sécurisé de type:

// Dans build.gradle (:app) ajoute le plugin
plugins {
 ...
 id("com.google.devtools.ksp") version "1.7.21-1.0.8" // Version d'exemple, vérifiez la version actuelle
}

// Dans build.gradle (:app) ajoute des dépendances
dependencies {
 ...
 implementation("androidx.datastore:datastore-preferences:1.0.0") // Vérifiez la version actuelle
 implementation("androidx.datastore:datastore-preferences-core:1.0.0") // Vérifiez la version actuelle
 ksp("androidx.datastore:datastore-preferences-core:1.0.0") // Vérifiez la version actuelle
}

// Définition de l'interface pour KSP
interface SettingsPref {
    val appName: String
    val isNotificationsEnabled: Boolean
    val theme: Int
}

// Génération d'implémentation avec KSP
// Créera une classe de type SettingsPrefImpl, qui peut être utilisée pour accéder aux données

DataStore Preferences est la méthode recommandée pour stocker des paramètres simples et des données dans Android, remplaçant SharedPreferences obsolète.