Jakie znasz sposoby przechowywania danych?
sobes.tech AI
Odpowiedź od AI
-
SharedPreferences: Do przechowywania prostych par klucz-wartość (typy prymitywne). Szybki dostęp, ale nie nadaje się do dużych ilości danych.
-
Pamięć wewnętrzna (Internal Storage): System plików dostępny tylko dla aplikacji. Dane są usuwane podczas odinstalowania. Odpowiednie dla danych prywatnych.
// Zapisywanie pliku applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use { it.write("Some data".toByteArray()) } // Odczyt pliku applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines -> lines.forEach { println(it) } } -
Pamięć zewnętrzna (External Storage): System plików dostępny dla innych aplikacji (z uprawnieniami) i użytkownika. Dane pozostają po odinstalowaniu. Wymaga uwagi do uprawnień w Android 10+. Odpowiednie dla danych niepoufnych.
-
Bazy danych SQLite: Relacyjna baza danych. Odpowiednia dla danych strukturalnych wymagających złożonych zapytań. Wymaga więcej kodu do implementacji. Room Persistence Library jest zalecanym ORM.
-- Przykład zapytania SQL SELECT * FROM users WHERE age > 30 -
Content Providers: Zapewniają strukturalny dostęp do wspólnych zbiorów danych. Mogą być tworzone dla własnych danych lub do dostępu do danych innych aplikacji (np. kontakty).
-
DataStore: Nowoczesne asynchroniczne rozwiązanie do przechowywania danych, zastępujące SharedPreferences i część funkcjonalności SQLite. Istnieją dwa typy: Preferences DataStore (dla par klucz-wartość) i Proto DataStore (dla obiektów typowanych z Protobuf).
// Przykład 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 (starsze wersje) / DataSync / inne rozwiązania chmurowe: Do synchronizacji danych między urządzeniami użytkownika i przechowywania kopii zapasowych. Wymaga integracji z usługami chmurowymi.
Wybór metody zależy od typu danych, ich objętości, potrzeby wspólnego dostępu, kwestii bezpieczeństwa i wymagań wydajności.