Ниже представлены ответы на вопросы из вашего списка.
---
▎1. Основы Activity
• Что такое Activity?
Activity — это компонент Android, представляющий собой отдельный экран с пользовательским интерфейсом. Она служит точкой входа для взаимодействия пользователя с приложением.
• Что такое жизненный цикл Activity и зачем его понимать?
Жизненный цикл — это набор состояний, через которые проходит Activity с момента создания до уничтожения. Понимание жизненного цикла критически важно, чтобы приложение работало корректно: не «падало» при повороте экрана, не тратило заряд батареи в фоне и не теряло данные пользователя.
• Методы обратного вызова (callbacks):
onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(), onRestart().
▎2. Основные состояния Activity
• Описания состояний:
– Resumed (Active/Running): Activity находится на переднем плане, пользователь может взаимодействовать с ней.
– Paused: Activity частично перекрыта другим компонентом (например, полупрозрачным диалоговым окном), пользователь не может с ней взаимодействовать.
– Stopped: Activity полностью скрыта, но объект всё еще в памяти.
– Destroyed: Activity полностью удалена из памяти.
• Видна, но нельзя взаимодействовать: Состояние Paused.
• Полностью скрыта, но не уничтожена: Состояние Stopped.
▎3. Методы жизненного цикла
• Назначение:
– onCreate(): Инициализация (создание UI, связывание данных).
– onStart(): Делает Activity видимой для пользователя.
– onResume(): Подготовка к взаимодействию (фокус).
– onPause(): Остановка анимаций/таймеров перед тем, как Activity перестанет быть активной.
– onStop(): Освобождение тяжелых ресурсов.
– onDestroy(): Финальная очистка перед уничтожением.
– onRestart(): Вызывается, если Activity возвращается из состояния Stopped.
• Порядок запуска: onCreate() -> onStart() -> onResume().
• Сворачивание и возврат:
– Сворачивание: onPause() -> onStop().
– Возврат: onRestart() -> onStart() -> onResume().
▎4. Поворот экрана
• Что происходит: По умолчанию Activity полностью уничтожается и создается заново. Это происходит потому, что конфигурация устройства (ориентация) изменилась.
• Вызываемые методы: onPause() -> onStop() -> onSaveInstanceState() -> onDestroy() -> onCreate() -> onStart() -> onRestoreInstanceState() -> onResume().
• Сохранение данных: Используется метод onSaveInstanceState(Bundle outState). В него кладутся данные (ключ-значение), которые потом можно прочитать в onCreate() или onRestoreInstanceState() после пересоздания.
▎5. Практическое значение
• Зачем освобождать ресурсы: Чтобы предотвратить утечки памяти и не расходовать заряд батареи, когда приложение не активно.
• Что будет, если не отписаться/не остановить:
– Утечки памяти (Memory Leaks), что в итоге приведет к OutOfMemoryError и вылету приложения (Crash).
– Лишний расход батареи (датчики продолжают работать в фоне).
– Возможные ошибки, когда колбэк (callback) от датчика пытается обновить UI уже уничтоженного экрана.
• Пример: Приложение «Музыкальный плеер». Если не остановить проигрывание или освободить ресурсы правильно при сворачивании, звук может продолжать играть некорректно, или приложение может быть принудительно закрыто системой из-за удержания ресурсов в фоне.