Sobes.tech
Junior

Welke soorten gegevensopslag zijn er in Android-applicaties?

sobes.tech AI

Antwoord van AI

  1. 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.
  2. 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.
  3. 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.
  4. SQLite-databases:

    • Relationele database.
    • Geschikt voor het opslaan van gestructureerde gegevens.
    • Maakt gebruik van SQL-query's voor gegevensmanipulatie.
  5. 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.
  6. 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)