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 |
Ζωή της εφαρμογής | Παγκόσμια αντικείμενα |
| Προσωρινά αρχεία | Ορίζεται από τον προγραμματιστή | Μεγαλύτερα αντικείμενα, προσωρινή αποθήκευση |