Понимание жизненного цикла Activity
По мере того, как пользователь перемещается по вашему приложению, выходит из него и снова заходит, Activity в вашем приложении переходят через различные состояния в своем жизненном цикле. Класс Activity имеет несколько обратных функций, которые нам помогают узнать что состояние изменилось: система создает, останавливает или возобновляет действие, либо уничтожает процесс, в котором находится действие. Простыми словами нам часто необходимо знать в каком состоянии находится наше приложение, например когда пользователь использует наше приложение и вдруг получает входящий вызов то приложение временно пропадает из вида и перекрывается новым экраном с входящим вызовом, когда это происходит нам необходимо остановить все ненужные процессы в приложении, вот тут нам и приходит на помощь жизненный цикл Activity. С помощью функций жизненного цикла мы сможем совершать какие то действия в приложении в нужный момент.
У Activity есть 6 основных функций жизненного цикла
onCreate()
, onStart()
, onResume()
, onPause()
, onStop()
, и onDestroy()
. Система вызывает данные функции при изменении состояния Activity.
onCreate()
Данная функция вызывается когда activity впервые создано. По оканчанию создания activity , activity входит в состояние Created . В функции onCreate()
, мы пишем код который нам нужно запустить только один раз за весь жизненный цикл activity. Например в функции onCreate()
мы можем заполнять какой либо список который не будет меняться или выбираем цвет элементов и.т.д . Данная функция принимает параметр savedInstanceState
, это есть Bundle
а именно это объект который содержит предыдущее состояние activity. Если activity не существовало ранее то значение объекта Bundle
равно null.
onStart()
Когда Activity входит в состояние Started state, система вызывает данную фуекцию. Функция onStart()
делает видимым Activity для пользователя, Activity выходит на передний план и становится интерактивным для пользователя. Например это отличное место для кода инициализации UI (User Interface) компонентов.
Функция onStart()
выыпалняется очень быстро, и как в случае с Created state, activity не находится в состоянии Started state. Как только функция вызвана activity сразу переходит в Resumed state, и система вызывает функциюonResume()
.
onResume()
Когда activity входит в состояние Resumed state, оно становится на передний план, и тогда система вызывает метод onResume()
. Это состояние в котором приложение взаимодействует с пользователем. Приложение находится в данном состоянии до тех пор пока что либо не произойдет и оно уйдет с первого плана (например входящий звонок).
Когда процесс прерван activity входит в состояние Paused state, и система вызывает функцию onPause()
.
Если activity возврощается в состояние Resumed state из состояния Paused state, система снова вызывает функцию onResume()
. По этой причине мы должны инициализировать компоненты в функцииonResume()
которые мы остановили в функции onPause()
, а также инициализируем все компоненты которые нужно инициализировать в состоянии Resumed state.
onPause()
Система вызывает данный метод как только поймет что пользователь покидает приложение (это не означает что activity будет уничтожено); это означает что activity больше не находиться на переднем плане (оно может быть видно например в multi-window mode). Используйте функцию onPause()
для операций которые должны быть остановленны во время паузы пока Activity
находиться в состоянии Paused state, и ожидается скорое возобновление работы activity. Есть несколько причин почему activity входит в данное состояние. Например:
- Какие либо действия прервали работу приложения, как описано ввыше в функции onResume() . Это основные причины.
- В Android 7.0 (API level 24) или выше, несколько приложений могут работать в multi-window mode. Так как только одно приложение находиться на переднем плане, система вводит в состояние паузы все остальные activity.
- Когда появляется на экране диалоговое окно которое не полностью перекрывает наше activity, activity входит в состояние паузы так как оно уже не на переднем плане.
onStop()
Когда activity больше не видно на экране, оно входит в состояние Stopped state, и ситема вызывает функциюonStop()
. Это происходит например когда новое activity перекрывает весь экран. а также данная функция onStop()
может быть вызвана когда activity завершило.
В функции onStop()
нам нужно освободить все ресурсы которые нам не нужны , когда приложение не видно на экране.
onDestroy()
onDestroy()
эта функция вызываеться когда activity “разрушенно” по причине:
- Activity закончило свою работу (пользователь нажал на кнопку выхода из приложения или была запущенна функция
finish()
), или - Система “разрушила” activity по причине поворота экрана или использования multi-window mode
Данный метод это последний метод который вызывает activity перед тем как activity будет “разрушено”
В функции onDestroy()
мы должны быть “освобождены все ресурсы которые не были освобождены в функцииonStop()
.
В следующих уроках мы сразу перейдем к практике и будем создавать простенькие приложения для изучения программирования. Я решил обойтись без лишней теории а только добавил основное. Теории полно в интернете так что если кому интересно подробнее узнать о каких то элементах то можете по гуглить и обязательно найдете кучу информации, ну а на моих уроках вы научитесь программировать на практике! Всего вам доброго и увидемся на следующем уроке!!