Sobes.tech
Junior

Millised andmesalvestuse tüübid on Android rakendustes olemas?

sobes.tech AI

Vastus AI-lt

  1. Sisemälu (Internal Storage):

    • Saadaval ainult rakendusele, mis faili lõi.
    • Failid kustutatakse rakenduse desinstallimisel.
    • Sobib rakenduse konfidentsiaalsete andmete salvestamiseks.
  2. Väline salvestus (External Storage):

    • Saadaval kõigile rakendustele (pärast luba taotlemist).
    • Failid jäävad alles isegi pärast rakenduse eemaldamist.
    • Sobib jagatud andmete, näiteks fotode või muusika salvestamiseks.
  3. Jagatud eelistused (Shared Preferences):

    • Salvestab väikese koguse andmeid võtme-väärtuse formaadis.
    • Kasutatakse rakenduse seadete või kasutaja eelistuste salvestamiseks.
    • Andmed salvestatakse XML-faili.
  4. SQLite andmebaasid:

    • Relatsiooniline andmebaas.
    • Sobib struktureeritud andmete salvestamiseks.
    • Võimaldab kasutada SQL-päringuid andmete manipuleerimiseks.
  5. Content Providers:

    • Standardiseeritud liides andmetele rakenduste vahel.
    • Kasutatakse andmete vahetamiseks, näiteks kontaktide või kalendri andmed.
    • Võib kasutada rakenduse enda andmetele juurdepääsuks teistest komponentidest.
  6. Jetpack DataStore:

    • Asendab Shared Preferences.
    • Pakub asünkroonset voog API-d andmete salvestamiseks.
    • Toetab andmetüüpimist ja vigade töötlemist.

Siin on näide Shared Preferences kasutamisest:

// Saame SharedPreferences objekti
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Salvestame väärtuse
    putBoolean("is_first_run", false)
    apply() // Asünkroonselt muudatused rakendada
}

// Loeme väärtuse
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Siin on näide SQLite kasutamisest:

// Andmebaasi ja tabeli loomine
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) {
        // Andmebaasi uuendamise loogika
    }
}

// Andmete sisestamine
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Näidisenimi")
}

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