Τι μπορείτε να μας πείτε για τον κύκλο ζωής της 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
}
}