Sobes.tech
Junior

Quelles méthodes de stockage de données connais-tu?

sobes.tech IA

Réponse de l'IA

  1. SharedPreferences : Pour stocker des paires clé-valeur simples (types primitifs). Accès rapide, mais pas adapté pour de grands volumes de données.

  2. Mémoire interne (Internal Storage) : Système de fichiers accessible uniquement à l'application. Les données sont supprimées lors de la désinstallation. Convient pour des données privées.

    // Écriture de fichier
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Lecture de fichier
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Mémoire externe (External Storage) : Système de fichiers accessible à d'autres applications (avec permissions) et à l'utilisateur. Les données restent après désinstallation. Nécessite une attention particulière aux permissions sur Android 10+. Convient pour des données non sensibles.

  4. Bases de données SQLite : Base de données relationnelle. Convient pour des données structurées nécessitant des requêtes complexes. Nécessite plus de code pour l'implémentation. Room Persistence Library est l'ORM recommandé.

    -- Exemple de requête SQL
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers : Fournissent un accès structuré à des ensembles de données partagés. Peuvent être créés pour leurs propres données ou pour accéder aux données d'autres applications (par exemple, contacts).

  6. DataStore : Solution moderne et asynchrone pour stocker des données, remplaçant SharedPreferences et une partie de la fonctionnalité de SQLite. Il existe deux types : Preferences DataStore (pour pares clé-valeur) et Proto DataStore (pour objets typés avec Protobuf).

    // Exemple de Preferences DataStore
    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    suspend fun saveSetting(context: Context, key: String, value: Boolean) {
        context.dataStore.edit { settings ->
            settings[booleanPreferencesKey(key)] = value
        }
    }
    
  7. Jetpack DataStore (anciennes versions) / DataSync / autres solutions cloud : Pour synchroniser des données entre appareils de l'utilisateur et stocker des sauvegardes. Nécessite une intégration avec des services cloud.

Le choix de la méthode dépend du type de données, de leur volume, du besoin d'accès partagé, des questions de sécurité et des exigences de performance.