Sobes.tech
Junior

Πώς μπορούμε να αποθηκεύσουμε προσωρινά ένα αντικείμενο στο Android;

sobes.tech AI

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

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

  • Κατάσταση View: Τα αντικείμενα που σχετίζονται με το View μπορούν να αποθηκευτούν στην κατάσταση του, η οποία επαναφέρεται κατά την αναδημιουργία του View (π.χ. κατά περιστροφή οθόνης). Χρησιμοποιούνται onSaveInstanceState() και onRestoreInstanceState().
  • ViewModel: Ο καλύτερος τρόπος αποθήκευσης δεδομένων που σχετίζονται με το UI, τα οποία πρέπει να επιβιώσουν από αλλαγές διαμόρφωσης Activity/Fragment (π.χ. περιστροφές οθόνης). Το ViewModel υπάρχει μέχρι να καταστραφεί ο ViewModelStoreOwner.
    // Στο Activity/Fragment
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    
    // Στο ViewModel
    class MyViewModel : ViewModel() {
        var myObject: MyData? = null
    }
    
  • onRetainCustomNonConfigurationInstance() (παρωχημένο): Μέθοδος στο Activity για την αποθήκευση τυχαίων αντικειμένων που θα επιβιώσουν από αλλαγές διαμόρφωσης. Χρησιμοποιείται getLastNonConfigurationInstance() για την απόκτησή τους. Παρωχημένο υπέρ του ViewModel.
    // Στο Activity
    override fun onRetainCustomNonConfigurationInstance(): Any? {
        return myObjectToRetain
    }
    
    // Απόκτηση αντικειμένου
    val retainedObject = lastCustomNonConfigurationInstance as? MyData
    
  • Κλάση Application: Για αντικείμενα που πρέπει να ζουν καθ' όλη τη διάρκεια ζωής της εφαρμογής. Πρέπει να χρησιμοποιείται με προσοχή ώστε να μην αποθηκεύει πάρα πολλά δεδομένα.
  • Προσωρινά αρχεία: Για μεγαλύτερα αντικείμενα που δεν χωρούν άμεσα στη μνήμη ή απαιτούν αποθήκευση σε δίσκο για σύντομο χρονικό διάστημα.
Μέθοδος Διάρκεια ζωής Χρήση
Κατάσταση View Ζωή View + επαναδημιουργία Μικρά δεδομένα που σχετίζονται με το View
ViewModel Ζωή Activity/Fragment Δεδομένα UI που επιβιώνουν από αλλαγές διαμόρφωσης
onRetainCustomNonConfigurationInstance() Ζωή Activity + αλλαγές Τυχαία αντικείμενα (παρωχημένο)
Κλάση Application Ζωή της εφαρμογής Παγκόσμια αντικείμενα
Προσωρινά αρχεία Ορίζεται από τον προγραμματιστή Μεγαλύτερα αντικείμενα, προσωρινή αποθήκευση