Sobes.tech
Junior

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

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)
        // Επαναφορά κατάστασης
    }
}