Junior
Kādi datu glabāšanas veidi pastāv Android lietojumprogrammās?
sobes.tech AI
Atbilde no AI
-
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.
-
Ā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.
-
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ā.
-
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.
-
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.
-
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)