Junior
Kokie duomenų saugojimo tipai yra Android programose?
sobes.tech AI
Atsakymas iš AI
-
Vidinis saugykla (Internal Storage):
- Prieinama tik programai, sukūrusiai failą.
- Failai ištrinami pašalinus programą.
- Tinka saugoti programos konfidencialius duomenis.
-
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.
-
Bendrosios nuostatos (Shared Preferences):
- Laiko mažus duomenų kiekius raktas-reikšmė formatu.
- Naudojama programos nustatymams ar naudotojo pageidavimams saugoti.
- Duomenys saugomi XML faile.
-
SQLite duomenų bazės:
- Santykinė duomenų bazė.
- Tinka struktūruotiems duomenims saugoti.
- Leidžia naudoti SQL užklausas duomenų manipuliavimui.
-
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ų.
-
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)