Урок 2: Жизненный цикл Activity

Понимание жизненного цикла 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 “разрушенно” по причине:

  1. Activity закончило свою работу (пользователь нажал на кнопку выхода из приложения или была запущенна функция finish() ), или
  2. Система “разрушила” activity по причине поворота экрана или использования   multi-window mode

Данный метод это последний метод который вызывает activity перед тем как activity будет “разрушено”

В функции onDestroy() мы должны быть “освобождены все ресурсы которые не были освобождены в функцииonStop().

В следующих уроках мы сразу перейдем к практике и будем создавать простенькие приложения для изучения программирования. Я решил обойтись без лишней теории а только добавил основное. Теории полно в интернете так что если кому интересно подробнее узнать о каких то элементах то можете по гуглить и обязательно найдете кучу информации, ну а на моих уроках вы научитесь программировать на практике! Всего вам доброго и увидемся на следующем уроке!!