Junior
Welke soorten gegevensopslag zijn er in Android-applicaties?
sobes.tech AI
Antwoord van AI
-
Intern opslag:
- Alleen toegankelijk voor de app die het bestand heeft gemaakt.
- Bestanden worden verwijderd bij het verwijderen van de app.
- Geschikt voor het opslaan van vertrouwelijke gegevens van de app.
-
Externe opslag:
- Beschikbaar voor alle apps (na het aanvragen van toestemming).
- Bestanden blijven bestaan, zelfs na het verwijderen van de app.
- Geschikt voor het opslaan van gedeelde gegevens zoals foto's of muziek.
-
Shared Preferences:
- Slaat kleine hoeveelheden gegevens op in key-waarde formaat.
- Gebruikt voor het opslaan van app-instellingen of gebruikersvoorkeuren.
- Gegevens worden opgeslagen in een XML-bestand.
-
SQLite-databases:
- Relationele database.
- Geschikt voor het opslaan van gestructureerde gegevens.
- Maakt gebruik van SQL-query's voor gegevensmanipulatie.
-
Content Providers:
- Bieden een gestandaardiseerde interface voor toegang tot gegevens tussen apps.
- Gebruikt voor het uitwisselen van gegevens zoals contacten of agenda.
- Kan worden gebruikt om toegang te krijgen tot eigen app-gegevens vanuit andere componenten.
-
Jetpack DataStore:
- Vervangt Shared Preferences.
- Biedt een asynchrone API voor gegevensopslag.
- Ondersteunt datatypen en foutafhandeling.
Hier is een voorbeeld van het gebruik van Shared Preferences:
// Verkrijg het SharedPreferences-object
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Sla een waarde op
putBoolean("is_first_run", false)
apply() // Pas de wijzigingen asynchroon toe
}
// Lees de waarde
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
Hier is een voorbeeld van het gebruik van SQLite:
// Aanmaken van database en tabel
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) {
// Logica voor het bijwerken van de database
}
}
// Gegevens invoegen
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Voorbeeldnaam")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)