Sobes.tech
Junior

Aké spôsoby ukladania dát máš?

sobes.tech AI

Odpoveď od AI

  1. SharedPreferences: Na ukladanie jednoduchých párov kľúč-hodnota (primitívne typy). Rýchly prístup, ale nie je vhodný pre veľké objemy dát.

  2. Vnútorná pamäť (Internal Storage): Súborový systém dostupný iba aplikácii. Dáta sa odstraňujú pri odinštalovaní. Vhodné pre súkromné údaje.

    // Zápis do súboru
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Čítanie zo súboru
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Vonkajšia pamäť (External Storage): Súborový systém dostupný iným aplikáciám (s povoleniami) a používateľovi. Dáta zostávajú po odinštalovaní. Vyžaduje osobitnú pozornosť k povoleniam na Android 10+. Vhodné pre necitlivé údaje.

  4. SQLite databázy: Relačná databáza. Vhodné pre štruktúrované údaje, ktoré vyžadujú zložité dotazy. Vyžaduje viac kódu na implementáciu. Room Persistence Library – odporúčaný ORM.

    -- Príklad SQL dotazu
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Poskytujú štruktúrovaný prístup k spoločným dátovým sadám. Môžu byť vytvorené pre vlastné údaje alebo na prístup k údajom iných aplikácií (napríklad kontakty).

  6. DataStore: Moderné asynchrónne riešenie na ukladanie dát, nahrádzajúce SharedPreferences a časť funkčnosti SQLite. Existujú dva typy: Preferences DataStore (pre páry kľúč-hodnota) a Proto DataStore (pre typované objekty s Protobuf).

    // Príklad Preferences DataStore
    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    
    suspend fun saveSetting(context: Context, key: String, value: Boolean) {
        context.dataStore.edit { settings ->
            settings[booleanPreferencesKey(key)] = value
        }
    }
    
  7. Jetpack DataStore (staršie verzie) / DataSync / iné cloudové riešenia: Na synchronizáciu dát medzi zariadeniami používateľa a na zálohovanie. Vyžaduje integráciu s cloudovými službami.

Výber spôsobu závisí od typu dát, ich objemu, potreby spoločného prístupu, otázok bezpečnosti a požiadaviek na výkon.