Πώς διασφαλίζεται η διατήρηση της τρέχουσας κατάστασης του συστήματος κατά την αλλαγή της διαμόρφωσης;
sobes.tech AI
Απάντηση από AI
Στο Android, για την αποθήκευση της τρέχουσας κατάστασης του συστήματος κατά την αλλαγή της διαμόρφωσης (π.χ., περιστροφή οθόνης), χρησιμοποιείται ο μηχανισμός αποθήκευσης της κατάστασης της Activity ή Fragment.
Βασικοί τρόποι:
-
onSaveInstanceState(Bundle outState) — μέθοδος στην οποία μπορείτε να αποθηκεύσετε τα απαραίτητα δεδομένα σε ένα αντικείμενο Bundle. Αυτά τα δεδομένα θα είναι διαθέσιμα κατά την αναδημιουργία της Activity στα onCreate ή onRestoreInstanceState.
-
ViewModel — συστατικό από τα αρχιτεκτονικά συστατικά του Android, που διατηρεί δεδομένα κατά την αλλαγή διαμόρφωσης και δεν αναδημιουργείται μαζί με την Activity.
-
Αποθήκευση της κατάστασης των UI στοιχείων — πολλά τυπικά widget αποθηκεύουν αυτόματα την κατάσταση τους αν έχουν μοναδικό αναγνωριστικό.
Παράδειγμα αποθήκευσης της κατάστασης ενός μετρητή:
class MainActivity : AppCompatActivity() {
private var counter = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
counter = savedInstanceState?.getInt("counter_key") ?: 0
// ενημέρωση του UI με την τρέχουσα τιμή του counter
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("counter_key", counter)
}
}
Με αυτόν τον τρόπο, κατά την αλλαγή διαμόρφωσης, τα δεδομένα δεν χάνονται και ο χρήστης θα δει την ίδια διεπαφή και κατάσταση.