Sobes.tech
Junior

Welche Arten von Datenspeichern gibt es in Android-Anwendungen?

sobes.tech KI

Antwort von AI

  1. Interner Speicher:

    • Nur für die Anwendung zugänglich, die die Datei erstellt hat.
    • Dateien werden beim Löschen der Anwendung entfernt.
    • Geeignet zum Speichern vertraulicher Anwendungsdaten.
  2. Externer Speicher:

    • Für alle Anwendungen zugänglich (nach Anforderung der Berechtigungen).
    • Dateien bleiben auch nach der Deinstallation der Anwendung erhalten.
    • Geeignet zum Speichern gemeinsamer Daten wie Fotos oder Musik.
  3. Shared Preferences:

    • Speichert kleine Datenmengen im Schlüssel-Wert-Format.
    • Wird verwendet, um App-Einstellungen oder Benutzerpräferenzen zu speichern.
    • Daten werden in einer XML-Datei gespeichert.
  4. SQLite-Datenbanken:

    • Relationale Datenbank.
    • Geeignet zum Speichern strukturierter Daten.
    • Ermöglicht die Verwendung von SQL-Abfragen zur Datenmanipulation.
  5. Content Provider:

    • Bietet eine standardisierte Schnittstelle für den Datenzugriff zwischen Anwendungen.
    • Wird zum Austausch von Daten wie Kontakten oder Kalender verwendet.
    • Kann verwendet werden, um auf eigene Anwendungsdaten aus anderen Komponenten zuzugreifen.
  6. Jetpack DataStore:

    • Ersetzt Shared Preferences.
    • Bietet eine asynchrone API zum Speichern von Daten.
    • Unterstützt Typisierung und Fehlerbehandlung.

Hier ist ein Beispiel für die Verwendung von Shared Preferences:

// Zugriff auf das SharedPreferences-Objekt
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Wert speichern
    putBoolean("is_first_run", false)
    apply() // Änderungen asynchron anwenden
}

// Wert lesen
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Hier ist ein Beispiel für die Verwendung von SQLite:

// Erstellen der Datenbank und Tabelle
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) {
        // Logik für die Aktualisierung der Datenbank
    }
}

// Daten einfügen
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Beispielname")
}

val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)