Sobes.tech
Junior

Kokie duomenų saugojimo tipai yra Android programose?

sobes.tech AI

Atsakymas iš AI

  1. Vidinis saugykla (Internal Storage):

    • Prieinama tik programai, sukūrusiai failą.
    • Failai ištrinami pašalinus programą.
    • Tinka saugoti programos konfidencialius duomenis.
  2. Išorinė saugykla (External Storage):

    • Prieinama visoms programoms (po leidimo prašymo).
    • Failai lieka net pašalinus programą.
    • Tinka bendriems duomenims, pvz., nuotraukoms ar muzikai.
  3. Bendrosios nuostatos (Shared Preferences):

    • Laiko mažus duomenų kiekius raktas-reikšmė formatu.
    • Naudojama programos nustatymams ar naudotojo pageidavimams saugoti.
    • Duomenys saugomi XML faile.
  4. SQLite duomenų bazės:

    • Santykinė duomenų bazė.
    • Tinka struktūruotiems duomenims saugoti.
    • Leidžia naudoti SQL užklausas duomenų manipuliavimui.
  5. Content Providers:

    • Standartizuotas sąsaja prie duomenų tarp programų.
    • Naudojama duomenų mainams, pvz., kontaktams ar kalendoriui.
    • Gali būti naudojama prieigai prie savo programos duomenų iš kitų komponentų.
  6. Jetpack DataStore:

    • Pakeičia Shared Preferences.
    • Siūlo asinchroninį srautų API duomenų saugojimui.
    • Palaiko duomenų tipizaciją ir klaidų apdorojimą.

Štai pavyzdys, kaip naudoti Shared Preferences:

// Gauti SharedPreferences objektą
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
    // Išsaugoti reikšmę
    putBoolean("is_first_run", false)
    apply() // Asinchroniškai taikyti pakeitimus
}

// Skaityti reikšmę
val isFirstRun = sharedPref.getBoolean("is_first_run", true)

Štai pavyzdys, kaip naudoti SQLite:

// Sukurti duomenų bazę ir lentelę
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) {
        // Duomenų bazės atnaujinimo logika
    }
}

// Duomenų įterpimas
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase

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

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