Какие основные методы жизненного цикла активности в Android?
Что проверяют
Знаете ли вы порядок вызовов и, главное, где что делать: в какой момент подписываться, в какой сохранять состояние.
Как отвечать
Прямой ход: onCreate (создание, разметка, восстановление состояния), onStart (экран становится видимым), onResume (получает фокус, пользователь может взаимодействовать).
Обратный: onPause (теряет фокус, поверх что-то появилось), onStop (больше не виден), onDestroy (уничтожение).
Что где делать:
- onCreate: создать всё, что живёт весь экран, восстановить состояние из
savedInstanceState; - onStart и onStop: подписки, которые нужны только видимому экрану;
- onResume и onPause: то, что требует фокуса, камера, сенсоры, воспроизведение;
- onSaveInstanceState: сохранить лёгкое состояние экрана перед возможным уничтожением.
Ключевое, что спрашивают следом: система может убить процесс после onStop без вызова onDestroy, поэтому на него нельзя вешать сохранение важных данных. И поворот экрана пересоздаёт активность целиком, поэтому состояние держат в ViewModel, которая поворот переживает.
Где спотыкаются
Не знают, что onDestroy не гарантирован.
Освобождают ресурсы в onDestroy, из-за чего камера остаётся занятой при сворачивании.
Хранят данные в полях активности и теряют их при повороте.
Путают, что видимость даёт onStart, а фокус onResume: при появлении диалога поверх активность остаётся видимой, но теряет фокус.