Ποιες μέθοδοι του κύκλου ζωής της δραστηριότητας γνωρίζετε και πώς εκτελούνται;
sobes.tech AI
Απάντηση από AI
onCreate(): Καλείται κατά την πρώτη δημιουργία της δραστηριότητας. Χρησιμοποιείται για την αρχικοποίηση του UI και των δεδομένων.onStart(): Η δραστηριότητα γίνεται ορατή στον χρήστη.onResume(): Η δραστηριότητα γίνεται ενεργή και βρίσκεται στην πρώτη γραμμή. Ο χρήστης μπορεί να αλληλεπιδράσει μαζί της.onPause(): Καλείται όταν η δραστηριότητα μεταβαίνει σε υπόβαθρο ή μια άλλη δραστηριότητα την καλύπτει μερικώς. Χρησιμοποιείται για την αποθήκευση της κατάστασης που πρέπει να αποκατασταθεί γρήγορα.onStop(): Η δραστηριότητα δεν είναι πλέον ορατή στον χρήστη. Χρησιμοποιείται για την απελευθέρωση μη χρησιμοποιούμενων πόρων.onDestroy(): Καλείται πριν καταστραφεί η δραστηριότητα. Χρησιμοποιείται για την τελική εκκαθάριση πόρων.onRestart(): Καλείται μετά τοonStop(), όταν η δραστηριότητα γίνεται ξανά ορατή.
Η σειρά εκτέλεσης των μεθόδων κατά την εκκίνηση: onCreate() -> onStart() -> onResume().
Η σειρά κατά την μετάβαση σε υπόβαθρο (π.χ., πατώντας το κουμπί Αρχική): onPause() -> onStop().
Η σειρά κατά την επιστροφή από το υπόβαθρο: onRestart() -> onStart() -> onResume().
Η σειρά κατά την καταστροφή της δραστηριότητας: onPause() -> onStop() -> onDestroy().
Κατά την περιστροφή της οθόνης, η δραστηριότητα καταστρέφεται και δημιουργείται ξανά. Η σειρά: onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onResume(). Για την αποθήκευση της κατάστασης, χρησιμοποιείται το onSaveInstanceState() (που καλείται πριν από το onStop()) και η αποκατάσταση στο onCreate() ή onRestoreInstanceState() (που καλείται μετά το onStart()).
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // Αρχικοποίηση UI
// Ανάκτηση κατάστασης από savedInstanceState
}
override fun onStart() {
super.onStart()
// Η δραστηριότητα γίνεται ορατή
}
override fun onResume() {
super.onResume()
// Η δραστηριότητα βρίσκεται στην πρώτη γραμμή, διαθέσιμη για αλληλεπίδραση
}
override fun onPause() {
super.onPause()
// Η δραστηριότητα μεταβαίνει σε υπόβαθρο
// Αποθήκευση κατάστασης που μπορεί να αποκατασταθεί γρήγορα
}
override fun onStop() {
super.onStop()
// Η δραστηριότητα δεν είναι ορατή
// Απελευθέρωση πόρων
}
override fun onDestroy() {
super.onDestroy()
// Η δραστηριότητα καταστρέφεται
// Τελικός καθαρισμός πόρων
}
override fun onRestart() {
super.onRestart()
// Η δραστηριότητα επιστρέφει από το υπόβαθρο
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
// Αποθήκευση κατάστασης πριν από την καταστροφή
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
// Επαναφορά κατάστασης
}
}