Sobes.tech
Junior

Kādi datu glabāšanas veidi pastāv Android lietojumprogrammās?

sobes.tech AI

Atbilde no AI

  1. Iekšējā glabātuve (Internal Storage):

    • Pieejama tikai lietotnei, kas izveidoja failu.
    • Faili tiek dzēsti, dzēšot lietotni.
    • Piemērota lietotnes konfidenciālo datu glabāšanai.
  2. Ārējā glabātuve (External Storage):

    • Pieejama visām lietotnēm (pēc atļaujas pieprasīšanas).
    • Faili paliek pat pēc lietotnes dzēšanas.
    • Piemērota kopīgu datu glabāšanai, piemēram, fotogrāfijām vai mūzikai.
  3. Kopīgas preferences (Shared Preferences):

    • Glabā nelielu datu apjomu atslēga-vērtība formātā.
    • Izmanto lietotnes iestatījumu vai lietotāja preferenču saglabāšanai.
    • Dati tiek glabāti XML failā.
  4. SQLite datu bāzes:

    • Relāciju datu bāze.
    • Piemērota strukturētu datu glabāšanai.
    • Atļauj izmantot SQL vaicājumus datu manipulācijai.
  5. Content Providers:

    • Standartizēts interfeiss datu piekļuvei starp lietotnēm.
    • Izmanto datu apmaiņai, piemēram, kontaktu vai kalendāra datiem.
    • Var tikt izmantots, lai piekļūtu saviem lietotnes datiem no citām komponentēm.
  6. Jetpack DataStore:

    • Aizstāj Shared Preferences.
    • Nodrošina asinhronu straumes API datu glabāšanai.
    • Atbalsta datu tipizāciju un kļūdu apstrādi.

Šeit ir piemērs, kā izmantot Shared Preferences:

// Saņem SharedPreferences objektu
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Saglabāt vērtību
    putBoolean("is_first_run", false)
    apply() // Asinhroni piemēro izmaiņas
}

// Lasīt vērtību
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Šeit ir piemērs, kā izmantot SQLite:

// Izveidot datu bāzi un tabulu
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) {
        // Datu bāzes atjaunināšanas loģika
    }
}

// Datu ievietošana
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

val values = ContentValues().apply {
    put(DBHelper.COLUMN_NAME, "Piemēra vārds")
}

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