Kokias alternatyvas SharedPreferences galite pasiūlyti duomenų saugojimui Android?
sobes.tech AI
Atsakymas iš AI
-
Room Persistence Library: Abstrakcija nad SQLite. Pateikia tipizuotą prieigą prie duomenų per DAO (Data Access Objects), palaiko Coroutines ir Flow. Puikiai tinka struktūruotiems ir reliacinės duomenims:
// Pavyzdys Query @Dao interface UserDao { @Query("SELECT * FROM users WHERE id = :userId") suspend fun getUserById(userId: Int): User? } -
DataStore: Modernesnė alternatyva
SharedPreferencesiš Google. SprendžiaSharedPreferencesproblemas, tokias kaip srauto saugumas ir UI srauto blokavimas. Yra dvi įgyvendinimo formos:Preferences DataStore(panašus įSharedPreferences) irProto DataStore(tipizuotiems duomenims su Protocol Buffers). Naudoja Kotlin Coroutines ir Flow.// Pavyzdys skaitymo iš Preferences DataStore val exampleCounterFlow: Flow<Int> = context.dataStore.data .map { preferences -> preferences[EXAMPLE_COUNTER] ?: 0 } -
Vidinis/išorinis saugojimas (failai): Naudojamas dideliems nestruktūruotiems duomenims saugoti, pvz., medijos failams ar pritaikytiems formatams. Reikalauja aiškaus prieigos ir leidimų valdymo.
// Pavyzdys įrašymo į failą vidiniame saugykloje 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: Žemo lygio prieiga prie įmontuotos SQLite duomenų bazės. Reikalauja rašyti SQL užklausas ir rankiniu būdu valdyti bazę (atidaryti, uždaryti, versijų valdymas).
Roomyra rekomenduojama alternatyva daugeliu atvejų.-- Pavyzdys SQL užklausos SELECT column1, column2 FROM table_name WHERE condition; -
Išorinės debesų paslaugos: Firebase Realtime Database, Firestore. Duomenų sinchronizacija tarp įrenginių, atsarginės kopijos ir bendras naudojimas. Reikalauja interneto ryšio ir konfliktų sprendimo.
Pasirinkimas priklauso nuo duomenų tipo, apimties, struktūros, sinchronizacijos poreikio ir našumo reikalavimų. Mažiems raktų-verčių poroms geriau naudoti DataStore. Struktūruotiems duomenims — Room. Dideliems nestruktūruotiems duomenims — failų sistemą.