Sobes.tech
Junior

Jakie znasz sposoby przechowywania danych?

sobes.tech AI

Odpowiedź od AI

  1. SharedPreferences: Do przechowywania prostych par klucz-wartość (typy prymitywne). Szybki dostęp, ale nie nadaje się do dużych ilości danych.

  2. 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) }
    }
    
  3. 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.

  4. 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
    
  5. 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).

  6. 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
        }
    }
    
  7. 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.