Junior
Quels types de stockage de données existent dans les applications Android?
sobes.tech IA
Réponse de l'IA
-
Stockage interne :
- Accessible uniquement pour l'application ayant créé le fichier.
- Les fichiers sont supprimés lors de la suppression de l'application.
- Convient pour stocker des données confidentielles de l'application.
-
Stockage externe :
- Disponible pour toutes les applications (après avoir demandé les permissions).
- Les fichiers restent même après la suppression de l'application.
- Convient pour stocker des données partagées, comme des photos ou de la musique.
-
Préférences partagées :
- Stocke de petites quantités de données au format clé-valeur.
- Utilisé pour sauvegarder les paramètres de l'application ou les préférences utilisateur.
- Les données sont stockées dans un fichier XML.
-
Bases de données SQLite :
- Base de données relationnelle.
- Convient pour stocker des données structurées.
- Permet d'utiliser des requêtes SQL pour manipuler les données.
-
Fournisseurs de contenu :
- Fournissent une interface standardisée pour accéder aux données entre applications.
- Utilisés pour échanger des données, comme des contacts ou un calendrier.
- Peuvent être utilisés pour accéder aux données propres à l'application depuis d'autres composants.
-
Jetpack DataStore :
- Remplace les préférences partagées.
- Fournit une API asynchrone pour stocker des données.
- Supporte la typification des données et la gestion des erreurs.
Voici un exemple d'utilisation des préférences partagées :
// Obtenir l'objet SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Enregistrer une valeur
putBoolean("is_first_run", false)
apply() // Appliquer les changements de manière asynchrone
}
// Lire la valeur
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
Voici un exemple d'utilisation de SQLite :
// Création de la base de données et de la table
class DBHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
const val DATABASE_VERSION = 1
const val DATABASE_NAME = "MyDatabase.db"
const val TABLE_NAME = "my_table"
const val COLUMN_ID = "_id"
const val COLUMN_NAME = "name"
}
override fun onCreate(db: SQLiteDatabase) {
val createTable = "CREATE TABLE $TABLE_NAME (" +
"$COLUMN_ID INTEGER PRIMARY KEY," +
"$COLUMN_NAME TEXT)"
db.execSQL(createTable)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
// Logique de mise à jour de la base de données
}
}
// Insertion de données
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Exemple de nom")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)