Sobes.tech
Junior

Ποιους τρόπους αποθήκευσης δεδομένων γνωρίζεις;

sobes.tech AI

Απάντηση από AI

  1. SharedPreferences: Για την αποθήκευση απλών ζευγών κλειδιού-τιμής (πρωταρχικοί τύποι). Γρήγορη πρόσβαση, αλλά δεν είναι κατάλληλο για μεγάλους όγκους δεδομένων.

  2. Εσωτερική μνήμη (Internal Storage): Σύστημα αρχείων προσβάσιμο μόνο από την εφαρμογή. Τα δεδομένα διαγράφονται κατά την απεγκατάσταση. Κατάλληλο για ιδιωτικά δεδομένα.

    // Εγγραφή αρχείου
    applicationContext.openFileOutput("my_file.txt", Context.MODE_PRIVATE).use {
        it.write("Some data".toByteArray())
    }
    
    // Ανάγνωση αρχείου
    applicationContext.openFileInput("my_file.txt").bufferedReader().useLines { lines ->
        lines.forEach { println(it) }
    }
    
  3. Εξωτερική μνήμη (External Storage): Σύστημα αρχείων προσβάσιμο σε άλλες εφαρμογές (με άδειες) και στον χρήστη. Τα δεδομένα παραμένουν μετά την απεγκατάσταση. Απαιτεί προσοχή στις άδειες στο Android 10+. Κατάλληλο για μη ευαίσθητα δεδομένα.

  4. SQLite βάσεις δεδομένων: Σχεσιακή βάση δεδομένων. Κατάλληλο για δομημένα δεδομένα που απαιτούν πολύπλοκα ερωτήματα. Απαιτεί περισσότερο κώδικα για υλοποίηση. Το Room Persistence Library είναι η προτεινόμενη ORM.

    -- Παράδειγμα SQL ερωτήματος
    SELECT * FROM users WHERE age > 30
    
  5. Content Providers: Παρέχουν δομημένη πρόσβαση σε κοινόχρηστα σύνολα δεδομένων. Μπορούν να δημιουργηθούν για τα δικά τους δεδομένα ή για πρόσβαση σε δεδομένα άλλων εφαρμογών (π.χ. επαφές).

  6. DataStore: Σύγχρονη και ασύγχρονη λύση αποθήκευσης δεδομένων, που αντικαθιστά το SharedPreferences και μέρος της λειτουργικότητας του SQLite. Υπάρχουν δύο τύποι: Preferences DataStore (για ζεύγη κλειδιού-τιμής) και Proto DataStore (για τυποποιημένα αντικείμενα με Protobuf).

    // Παράδειγμα 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 (παλαιότερες εκδόσεις) / DataSync / άλλες λύσεις cloud: Για συγχρονισμό δεδομένων μεταξύ συσκευών του χρήστη και αποθήκευση αντιγράφων ασφαλείας. Απαιτεί ενσωμάτωση με cloud υπηρεσίες.

Η επιλογή μεθόδου εξαρτάται από τον τύπο των δεδομένων, τον όγκο, την ανάγκη κοινής πρόσβασης, ζητήματα ασφαλείας και απαιτήσεις απόδοσης.