Какво можете да разкажете за жизнения цикъл на Activity в Android?
sobes.tech AI
Отговор от AI
Цикълът на живот на 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
}
}