Junior
Millised andmesalvestuse tüübid on Android rakendustes olemas?
sobes.tech AI
Vastus AI-lt
-
Sisemälu (Internal Storage):
- Saadaval ainult rakendusele, mis faili lõi.
- Failid kustutatakse rakenduse desinstallimisel.
- Sobib rakenduse konfidentsiaalsete andmete salvestamiseks.
-
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.
-
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.
-
SQLite andmebaasid:
- Relatsiooniline andmebaas.
- Sobib struktureeritud andmete salvestamiseks.
- Võimaldab kasutada SQL-päringuid andmete manipuleerimiseks.
-
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.
-
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)