Sobes.tech
Junior

Kokius duomenų saugojimo būdus žinai?

sobes.tech AI

Atsakymas iš AI

  1. SharedPreferences: Paprastų raktų-vertės porų saugojimas (primityvūs tipus). Greitas prieigos būdas, bet netinka dideliems duomenų kiekiams.

  2. Vidinė atmintis (Internal Storage): Failų sistema, prieinama tik programai. Duomenys ištrinami pašalinus programą. Tinka privatiniams duomenims.

    // Failo įrašymas
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Failo skaitymas
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Išorinė atmintis (External Storage): Failų sistema, prieinama kitiems programoms (su leidimais) ir vartotojui. Duomenys išlieka po pašalinimo. Reikalauja atskiro dėmesio leidimams Android 10+.

  4. SQLite duomenų bazės: Santykinė duomenų bazė. Tinka struktūrizuotiems duomenims, reikalaujantiems sudėtingų užklausų. Reikalauja daugiau kodo. Rekomenduojama naudoti Room.

    -- Užklausos pavyzdys
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Teikia struktūruotą prieigą prie bendrų duomenų rinkinių. Gali būti sukurti savo duomenims arba naudoti kitų programų duomenims (pvz., kontaktai).

  6. DataStore: Šiuolaikinis asinchroninis sprendimas duomenų saugojimui, pakeičiantis SharedPreferences ir dalį SQLite funkcionalumo. Yra dviejų tipų: Preferences DataStore (raktas-reikšmė poroms) ir Proto DataStore (tipizuotiems objektams su Protobuf).

    // Preferences DataStore pavyzdys
    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 (anksčiau versijos) / DataSync / kiti debesų sprendimai: Naudojami duomenų sinchronizavimui tarp vartotojo įrenginių ir atsarginių kopijų saugojimui. Reikalauja integracijos su debesų paslaugomis.

Pasirinkimas priklauso nuo duomenų tipo, jų kiekio, bendro naudojimo poreikio, saugumo klausimų ir našumo reikalavimų.