Ποιους τρόπους αποθήκευσης δεδομένων γνωρίζεις;
sobes.tech AI
Απάντηση από AI
-
SharedPreferences: Για την αποθήκευση απλών ζευγών κλειδιού-τιμής (πρωταρχικοί τύποι). Γρήγορη πρόσβαση, αλλά δεν είναι κατάλληλο για μεγάλους όγκους δεδομένων.
-
Εσωτερική μνήμη (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) } } -
Εξωτερική μνήμη (External Storage): Σύστημα αρχείων προσβάσιμο σε άλλες εφαρμογές (με άδειες) και στον χρήστη. Τα δεδομένα παραμένουν μετά την απεγκατάσταση. Απαιτεί προσοχή στις άδειες στο Android 10+. Κατάλληλο για μη ευαίσθητα δεδομένα.
-
SQLite βάσεις δεδομένων: Σχεσιακή βάση δεδομένων. Κατάλληλο για δομημένα δεδομένα που απαιτούν πολύπλοκα ερωτήματα. Απαιτεί περισσότερο κώδικα για υλοποίηση. Το Room Persistence Library είναι η προτεινόμενη ORM.
-- Παράδειγμα SQL ερωτήματος SELECT * FROM users WHERE age > 30 -
Content Providers: Παρέχουν δομημένη πρόσβαση σε κοινόχρηστα σύνολα δεδομένων. Μπορούν να δημιουργηθούν για τα δικά τους δεδομένα ή για πρόσβαση σε δεδομένα άλλων εφαρμογών (π.χ. επαφές).
-
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 } } -
Jetpack DataStore (παλαιότερες εκδόσεις) / DataSync / άλλες λύσεις cloud: Για συγχρονισμό δεδομένων μεταξύ συσκευών του χρήστη και αποθήκευση αντιγράφων ασφαλείας. Απαιτεί ενσωμάτωση με cloud υπηρεσίες.
Η επιλογή μεθόδου εξαρτάται από τον τύπο των δεδομένων, τον όγκο, την ανάγκη κοινής πρόσβασης, ζητήματα ασφαλείας και απαιτήσεις απόδοσης.