Sobes.tech
Junior

Milliseid andmete salvestamise viise tead?

sobes.tech AI

Vastus AI-lt

  1. SharedPreferences: Lihts võtme-väärtuse paaride salvestamine (primitiivsed tüübid). Kiire juurdepääs, kuid ei sobi suurema andmemahtude jaoks.

  2. Sisemälu (Internal Storage): Failisüsteem, millele pääseb ligi ainult rakendus. Andmed kustutatakse desinstallimisel. Sobib privaatsete andmete jaoks.

    // Faili kirjutamine
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Faili lugemine
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Väline mälu (External Storage): Failisüsteem, millele pääsevad ligi teised rakendused (luba nõutud) ja kasutaja. Andmed jäävad pärast desinstallimist. Vajab erilist tähelepanu luba nõuetele Android 10+.

  4. SQLite andmebaasid: Relatsiooniline andmebaas. Sobib struktureeritud andmete jaoks, mis nõuavad keerukaid päringuid. Nõuab rohkem koodi. Soovitatav Room Persistence Library.

    -- Näide SQL-päringust
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Pakuvad struktureeritud juurdepääsu ühistele andmekogumitele. Võivad olla loodud oma andmete jaoks või kasutada teiste rakenduste andmeid (näiteks kontaktid).

  6. DataStore: Kaasaegne asünkroonne lahendus andmete salvestamiseks, asendades SharedPreferences ja osa SQLite funktsionaalsusest. On kahte tüüpi: Preferences DataStore (võtme-väärtuse paaridele) ja Proto DataStore (tüübipõhiste objektide jaoks Protobufiga).

    // Preferences DataStore näide
    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 (varasemad versioonid) / DataSync / muud pilvepõhised lahendused: Kasutatakse andmete sünkroniseerimiseks kasutaja seadmete vahel ja varundamiseks. Nõuab integreerimist pilveteenustega.

Valik sõltub andmetüübist, mahust, ühiskasutuse vajadusest, turvaküsimustest ja jõudlusnõuetest.