Sobes.tech
Junior

Aké typy úložiska dát existujú v Android aplikáciách?

sobes.tech AI

Odpoveď od AI

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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)