Šta možete da kažete o životnom ciklusu Activity u Androidu?
sobes.tech АИ
Одговор од АИ
Животни циклус Activity је скуп стања и прелаза између њих, кроз које пролази сваки примерак Activity од тренутка креирања до уништења. Он се дефинише скупом callback метода.
Основне callback методе животног циклуса:
onCreate(): Позива се при првом креирањуActivity. Овде се врши инициализација UI, повезивање података и друге једнократне акције.onStart(): Позива се кадаActivityпостане видљив кориснику, али још није добила фокус.onResume(): Позива се кадаActivityдобије фокус и постане активна. Овде обично почињу анимације и друге интерактивне акције.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
}
}