Sobes.tech
Junior

Τι μπορείτε να μας πείτε για τον κύκλο ζωής της Activity στο Android;

sobes.tech AI

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

Ο κύκλος ζωής της Activity είναι ένα σύνολο καταστάσεων και μεταβάσεων μεταξύ αυτών, μέσω των οποίων περνά κάθε αντίγραφο της Activity από τη δημιουργία μέχρι την καταστροφή. Ορίζεται από μια σειρά μεθόδων callback.

Οι κύριες μέθοδοι callback του κύκλου ζωής:

  • onCreate(): Καλείται κατά την πρώτη δημιουργία της Activity. Εδώ πραγματοποιείται η αρχικοποίηση του UI, η σύνδεση δεδομένων και άλλες μοναδικές ενέργειες.
  • onStart(): Καλείται όταν η Activity γίνεται ορατή στον χρήστη, αλλά δεν έχει ακόμη λάβει εστίαση.
  • onResume(): Καλείται όταν η Activity λαμβάνει εστίαση και γίνεται ενεργή. Εδώ συνήθως ξεκινούν animations και άλλες διαδραστικές ενέργειες.
  • onPause(): Καλείται όταν η Activity χάνει εστίαση, αλλά εξακολουθεί να είναι ορατή (π.χ., ένα ημιδιαφανές παράθυρο διαλόγου πάνω από αυτήν). Εδώ πρέπει να σταματήσουν οι λειτουργίες που καταναλώνουν πόρους.
  • onStop(): Καλείται όταν η Activity δεν είναι πλέον ορατή στον χρήστη. Εδώ αποθηκεύονται μη αποθηκευμένα δεδομένα και απελευθερώνονται πόροι που δεν χρειάζονται πλέον.
  • onDestroy(): Καλείται πριν καταστραφεί η Activity. Εδώ απελευθερώνονται όλοι οι υπόλοιποι πόροι.
  • onRestart(): Καλείται μετά το onStop() όταν η Activity εμφανίζεται ξανά. Ακολουθεί το onStart().

Γραφικά, ο κύκλος ζωής μπορεί να αναπαρασταθεί ως:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

Υπάρχουν επίσης μεταβάσεις:

  • Created -> Started (μετά το onStart())
  • Started -> Resumed (μετά το onResume())
  • Resumed -> Paused (όταν χάνει εστίαση)
  • Paused -> Resumed (όταν λαμβάνει ξανά εστίαση)
  • Paused -> Stopped (όταν κρύβεται πλήρως)
  • Stopped -> Destroyed (όταν τερματίζεται η δραστηριότητα)
  • Stopped -> Restarted -> Started (μετά το onRestart())

Είναι σημαντικό να διαχειριζόμαστε σωστά την κατάσταση της Activity σε αυτές τις μεθόδους callback, ώστε να αποφεύγονται διαρροές μνήμης και να διασφαλίζεται η σωστή συμπεριφορά της εφαρμογής κατά την αλλαγή διαμόρφωσης ή την εναλλαγή μεταξύ Activity. Για την αποθήκευση της κατάστασης χρησιμοποιείται το onSaveInstanceState() (πριν το onStop()), και η επαναφορά γίνεται στο onCreate() ή στο onRestoreInstanceState() (μετά το onStart()).

Παράδειγμα χρήσης του onSaveInstanceState():

// Αποθήκευση κατάστασης
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// Επαναφορά κατάστασης
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // Χρησιμοποιήστε το myData
    }
}