Жизненный цикл Activity
Комментариев: 1 | Оценка: 5 |
Рассмотрим назначение различных методов жизненого цикла Activity в Android Studio.
onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
Этот метод вызывается при загрузки Activity. Он самый первый. В нем загружается интерфейс, элементы управления и другой код необходимый для создания Activity.
onStart()
@Override
protected void onStart() {
super.onStart();
...
}
Следующий метод, окно ещё не видно пользователю, запускается сразу после onCreate, вызывается для возобновления работы приостановленного приложения (приложение останавливается методом onStop()). Вызывается непосредственно перед тем, как активность становится видимой пользователю.
onResume()
@Override
protected void onResume() {
super.onResume();
...
}
Вызывается когда активность становится видимой и находится на переднем плане. Пытайтесь размещать относительно быстрый и легковесный код, чтобы ваше приложение оставалось отзывчивым при скрытии с экрана или выходе на передний план.
onPause()
@Override
protected void onPause() {
super.onPause();
...
}
Вызывается когда пользователь решает перейти к работе с новым окном. В этом методе необходимо остановить анимацию и другие действия, которые загружают процессор, зафиксировать несохранённые данные. Используйте легковесный код.
onStop()
@Override
protected void onStop() {
super.onStop();
...
}
Вызывается когда окно становится невидимым для пользователя, была запущена другая активность (существующая или новая), перекрывшая окно текущей активности.
onRestart()
@Override
protected void onRestart() {
super.onRestart();
...
}
Срабатывает когда окно возвращается в приоритетный режим, т.е. вызывается после того, как активность была остановлена и снова была запущена пользователем.
onDestroy()
@Override
protected void onDestroy() {
super.onDestroy();
...
}
Вызывается при окончании работы активности, при вызове метода finish() или в случае, когда система уничтожает этот экземпляр.
onBackPressed()
@Override
protected void onBackPressed() {
super.onBackPressed();
...
}
Выполняется когда нажата кнопка назад.
Пример:
private static long back_pressed;
@Override
public void onBackPressed() {
if (back_pressed + 2000 > System.currentTimeMillis())
super.onBackPressed();
else
Toast.makeText(getBaseContext(), "Для выхода нажмите ещё раз",
Toast.LENGTH_SHORT).show();
back_pressed = System.currentTimeMillis();
}
Очередь выполнения методов Activity
Запуск приложенияonCreate() → onStart() → onResume()
Нажимаем кнопку "Назад" для выхода из приложения
onBackPressed() → onPause() → onStop() → onDestroy()
Нажата кнопка Домой
onPause() → onStop()
После нажатия кнопки Домой, когда приложение запущено из списка недавно открытых приложений или через значок
onRestart() → onStart() → onResume()
Когда запускается другое приложение из области уведомлений или открывается приложение Настройки
onPause() → onStop()
Нажата кнопка Назад в другом приложении или в Настройках и ваше приложение стало снова видимым.
onRestart() → onStart() → onResume()
Открывается диалоговое окно
onPause()
Диалоговое окно закрывается
onResume()
Кто-то звонит на телефон
onPause() → onResume()
Пользователь отвечает на звонок
onPause()
Разговор окончен
onResume()
Экран телефона гаснет
onPause() → onStop()
Экран снова включён
onRestart() → onStart() → onResume()
При повороте активность проходит через цепочку различных состояний. Порядок следующий.
onPause()
onStop()
onDestroy()
onCreate()
onStart()
onResume()
Порядок вызовов
После onCreate() - onStart()После onRestart() - onStart()
После onStart() - onResume() или onStop()
После onResume() - onPause()
После onPause() - onResume() или onStop()
После onStop() - onRestart() или onDestroy()
После onDestroy() - ничего
Константин
24/7/2023 11:16