Aké alternatívy k SharedPreferences môžete navrhnúť na ukladanie údajov v Android?
sobes.tech AI
Odpoveď od AI
-
Room Persistence Library: Abstrakcia nad SQLite. Poskytuje typovaný prístup k údajom cez DAO (Data Access Objects), podporu pre Coroutines a Flow. Vhodné pre štruktúrované a relačné údaje.
// Príklad Query @Dao interface UserDao { @Query("SELECT * FROM users WHERE id = :userId") suspend fun getUserById(userId: Int): User? } -
DataStore: Modernejšia alternatíva k
SharedPreferencesod Google. Rieši problémySharedPreferencess bezpečnosťou vlákien a blokovaním UI vlákna. Existujú dve implementácie:Preferences DataStore(podobne akoSharedPreferences) aProto DataStore(pre typované údaje s Protocol Buffers). Používa Kotlin Coroutines a Flow.// Príklad čítania z Preferences DataStore val exampleCounterFlow: Flow<Int> = context.dataStore.data .map { preferences -> preferences[EXAMPLE_COUNTER] ?: 0 } -
Interné/vonkajšie úložisko (súbory): Pre ukladanie veľkých objemov nestruktúrovaných údajov, napríklad multimediálnych súborov alebo vlastných formátov. Vyžaduje explicitné riadenie prístupu a permissions.
// Príklad zápisu do súboru vo vnútornom úložisku String filename = "myapplicationdata"; String fileContents = "Hello world!"; try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE)) { fos.write(fileContents.getBytes()); } catch (IOException e) { e.printStackTrace(); } -
SQLiteDatabase: Nízkoúrový prístup k zabudovanej databáze SQLite. Vyžaduje písanie SQL dopytov a manuálne riadenie databázy (otvorenie, zatvorenie, správa verzií).
Roomje odporúčaná alternatíva pre väčšinu prípadov.-- Príklad SQL dopytu SELECT column1, column2 FROM table_name WHERE condition; -
Externé cloudové služby: Firebase Realtime Database, Firestore. Na synchronizáciu údajov medzi zariadeniami, zálohy a spoločný prístup. Vyžaduje pripojenie na internet a riešenie konfliktov.
Výber alternatívy závisí od typu, objemu, štruktúry údajov, potreby synchronizácie a požiadaviek na výkon. Pre pár kľúčov a hodnôt s malým objemom je vhodnejší DataStore. Pre štruktúrované údaje — Room. Pre veľké nestruktúrované údaje — súborový systém.