Milliseid alternatiive SharedPreferences'ile saate pakkuda andmete salvestamiseks Androidis?
sobes.tech AI
Vastus AI-lt
-
Room Persistence Library: Abstraktsioon SQLite'i üle. Pakub tüübitud juurdepääsu andmetele DAO (Data Access Objects) kaudu, toetab Coroutines ja Flow. Sobib struktureeritud ja relatsiooniliste andmete jaoks:
// Näide päringust @Dao interface UserDao { @Query("SELECT * FROM users WHERE id = :userId") suspend fun getUserById(userId: Int): User? } -
DataStore: Kaasaegsem alternatiiv
SharedPreferences-le Google'ilt. LahendabSharedPreferencesprobleeme, nagu järjepidevuse turvalisus ja UI niidi blokeerimine. On kaks rakendusviisi:Preferences DataStore(sarnaneSharedPreferences) jaProto DataStore(tüübitud andmetele Protocol Buffers'iga). Kasutab Kotlin Coroutines ja Flow.// Näide lugemisest Preferences DataStore'ist val exampleCounterFlow: Flow<Int> = context.dataStore.data .map { preferences -> preferences[EXAMPLE_COUNTER] ?: 0 } -
Sisemine/väline salvestus (failid): Kasutatakse suurte struktureerimata andmete salvestamiseks, näiteks meediafailid või kohandatud formaadid. Nõuab selget juurdepääsu ja luba haldust.
// Näide kirjutamisest faili sisemisse salvestusse 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: Madala taseme juurdepääs sisseehitatud SQLite andmebaasile. Nõuab SQL-päringute kirjutamist ja andmebaasi käsitsi haldamist (avatud, suletud, versioonide haldamine).
Roomon soovitatav alternatiiv enamikul juhtudel.-- Näide SQL-päringust SELECT column1, column2 FROM table_name WHERE condition; -
Välised pilveteenused: Firebase Realtime Database, Firestore. Andmete sünkroniseerimine seadmete vahel, varundused ja ühiskasutus. Nõuab internetiühendust ja konfliktide lahendamist.
Valik sõltub andmetüüpidest, mahust, struktuurist, sünkroniseerimise vajadusest ja jõudlusnõuetest. Väikeste võtme-väärtuse paaride jaoks sobib paremini DataStore. Struktureeritud andmete jaoks — Room. Suurte nestruktureeritud andmete jaoks — failisüsteem.