Aké spôsoby ukladania dát máš?
sobes.tech AI
Odpoveď od AI
-
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.
-
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) } } -
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.
-
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 -
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).
-
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 } } -
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.