Sobes.tech
Junior — Middle

Πώς διασφαλίζεται η διατήρηση της τρέχουσας κατάστασης του συστήματος κατά την αλλαγή της διαμόρφωσης;

sobes.tech AI

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

Στο Android, για την αποθήκευση της τρέχουσας κατάστασης του συστήματος κατά την αλλαγή της διαμόρφωσης (π.χ., περιστροφή οθόνης), χρησιμοποιείται ο μηχανισμός αποθήκευσης της κατάστασης της Activity ή Fragment.

Βασικοί τρόποι:

  1. onSaveInstanceState(Bundle outState) — μέθοδος στην οποία μπορείτε να αποθηκεύσετε τα απαραίτητα δεδομένα σε ένα αντικείμενο Bundle. Αυτά τα δεδομένα θα είναι διαθέσιμα κατά την αναδημιουργία της Activity στα onCreate ή onRestoreInstanceState.

  2. ViewModel — συστατικό από τα αρχιτεκτονικά συστατικά του Android, που διατηρεί δεδομένα κατά την αλλαγή διαμόρφωσης και δεν αναδημιουργείται μαζί με την Activity.

  3. Αποθήκευση της κατάστασης των 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)
    }
}

Με αυτόν τον τρόπο, κατά την αλλαγή διαμόρφωσης, τα δεδομένα δεν χάνονται και ο χρήστης θα δει την ίδια διεπαφή και κατάσταση.