← Назад к вопросам
Что такое жизненный цикл?
1.3 Junior🔥 261 комментариев
#Android компоненты#Жизненный цикл и навигация
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Жизненный цикл (Lifecycle) в Android
Жизненный цикл — это последовательность состояний, через которые проходит компонент Android приложения (Activity, Fragment, Service) от момента создания до уничтожения. Это одно из ключевых понятий в Android разработке, так как правильное управление жизненным циклом критично для стабильности и производительности приложения.
Жизненный цикл Activity
Activity проходит через следующие основные состояния:
- Created — Activity создана (onCreate)
- Started — Activity видима пользователю (onStart)
- Resumed — Activity активна и получает фокус (onResume)
- Paused — Activity потеряла фокус, но видима (onPause)
- Stopped — Activity не видима (onStop)
- Destroyed — Activity уничтожена (onDestroy)
Callback методы жизненного цикла
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Инициализация компонентов, загрузка сохранённого состояния
Log.d("Lifecycle", "onCreate called")
}
override fun onStart() {
super.onStart()
// Activity становится видимой
Log.d("Lifecycle", "onStart called")
}
override fun onResume() {
super.onResume()
// Activity получает фокус и готова к взаимодействию
// Здесь можно запустить анимации, камеру, обновления
Log.d("Lifecycle", "onResume called")
}
override fun onPause() {
super.onPause()
// Activity теряет фокус (открылась другая Activity)
// Сохраняйте данные и останавливайте ресурсоёмкие операции
Log.d("Lifecycle", "onPause called")
}
override fun onStop() {
super.onStop()
// Activity полностью скрыта
// Отпускайте ресурсы: камера, слушатели, сенсоры
Log.d("Lifecycle", "onStop called")
}
override fun onDestroy() {
super.onDestroy()
// Activity уничтожается перед удалением из памяти
// Очищайте ссылки, отписывайтесь от событий
Log.d("Lifecycle", "onDestroy called")
}
}
Жизненный цикл Fragment
Fragment имеет более сложный цикл жизни, так как зависит от Activity:
class MyFragment : Fragment() {
override fun onAttach(context: Context) {
super.onAttach(context)
// Fragment присоединён к Activity
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Инициализация данных Fragment
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Создание UI
return inflater.inflate(R.layout.fragment_my, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Инициализация UI элементов
}
override fun onStart() {
super.onStart()
// Fragment становится видимым
}
override fun onResume() {
super.onResume()
// Fragment активен и взаимодействует с пользователем
}
override fun onPause() {
super.onPause()
// Сохраняйте состояние
}
override fun onStop() {
super.onStop()
// Останавливайте операции
}
override fun onDestroyView() {
super.onDestroyView()
// Очищайте ссылки на View
}
override fun onDestroy() {
super.onDestroy()
// Финальная очистка
}
override fun onDetach() {
super.onDetach()
// Fragment отсоединён от Activity
}
}
Сценарии и best practices
Запуск тяжёлых операций:
- Камеру, GPS, слушатели датчиков запускайте в onResume
- Останавливайте в onPause
Сохранение состояния:
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("key", "value")
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val value = savedInstanceState?.getString("key")
}
Использование ViewModel (современный подход):
class MyViewModel : ViewModel() {
// Данные сохраняются при пересоздании Activity
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
}
class MainActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ViewModel сохранит состояние при повороте экрана
}
}
Важные моменты
- Lifecycle Aware Components помогают управлять жизненным циклом автоматически
- LiveData и Flow реагируют на изменения состояния приложения
- Правильное управление жизненным циклом предотвращает утечки памяти
- onDestroy может быть не вызван в критических ситуациях, поэтому полагайтесь на onStop
Понимание жизненного цикла — это основа стабильного и эффективного Android приложения.