Junior
Aké typy úložiska dát existujú v Android aplikáciách?
sobes.tech AI
Odpoveď od AI
-
Vnútorné úložisko (Internal Storage):
- Prístupné iba pre aplikáciu, ktorá vytvorila súbor.
- Súbory sa odstraňujú pri odinštalovaní aplikácie.
- Vhodné na uloženie dôverných údajov aplikácie.
-
Vonkajšie úložisko (External Storage):
- Prístupné pre všetky aplikácie (po žiadosti o povolenie).
- Súbory zostávajú aj po odinštalovaní aplikácie.
- Vhodné na uloženie spoločných údajov, ako sú fotografie alebo hudba.
-
Zdieľané preferencie:
- Ukladá malé množstvo údajov vo formáte kľúč-hodnota.
- Používa sa na uloženie nastavení aplikácie alebo používateľských preferencií.
- Údaje sú uložené v XML súbore.
-
SQLite databázy:
- Relačná databáza.
- Vhodná na uloženie štruktúrovaných údajov.
- Umožňuje používanie SQL dopytov na manipuláciu s údajmi.
-
Content Providers:
- Poskytujú štandardizované rozhranie na prístup k údajom medzi aplikáciami.
- Používajú sa na výmenu údajov, ako sú kontakty alebo kalendár.
- Môžu byť použité na prístup k vlastným údajom aplikácie z iných komponentov.
-
Jetpack DataStore:
- Nahrádza Zdieľané preferencie.
- Poskytuje asynchrónne streamové API na ukladanie údajov.
- Podporuje typizáciu údajov a spracovanie chýb.
Tu je príklad použitia Zdieľaných preferencií:
// Získanie objektu SharedPreferences
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
with (sharedPref.edit()) {
// Uloženie hodnoty
putBoolean("is_first_run", false)
apply() // Asynchrónne použitie zmien
}
// Čítanie hodnoty
val isFirstRun = sharedPref.getBoolean("is_first_run", true)
Tu je príklad použitia SQLite:
// Vytvorenie databázy a tabuľky
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) {
// Logika aktualizácie databázy
}
}
// Vkladanie údajov
val dbHelper = DBHelper(this)
val db = dbHelper.writableDatabase
val values = ContentValues().apply {
put(DBHelper.COLUMN_NAME, "Príklad mena")
}
val newRowId = db.insert(DBHelper.TABLE_NAME, null, values)