# Опишите жизненный цикл активити.

Жизненный цикл Activity — это последовательность состояний, через которые проходит экран Android-приложения от запуска до уничтожения. Управляется системой Android, чтобы оптимально расходовать ресурсы и сохранять пользовательский опыт при смене конфигурации, уходе в фон, пересоздании и т. д.

***

#### Основные состояния Activity

1. **Запускается (Created)** — объект Activity создаётся, но ещё не виден.
2. **Видим, но не активен (Started)** — Activity уже показана пользователю, но не имеет фокуса (поверх может быть диалог).
3. **Активен (Resumed)** — Activity на переднем плане, пользователь взаимодействует с ней.
4. **Приостановлен (Paused)** — Activity частично перекрыта, но ещё видна.
5. **Остановлен (Stopped)** — Activity полностью невидима, но объект остаётся в памяти.
6. **Уничтожен (Destroyed)** — Activity удалена, память освобождена.

***

#### Ключевые методы жизненного цикла

Последовательность вызовов:

1. **`onCreate(Bundle savedInstanceState)`**\
   Вызывается при создании Activity. Здесь:
   * инициализируются UI-элементы (`setContentView()`),
   * восстанавливается состояние (`savedInstanceState`),
   * настраиваются ViewModel, адаптеры, слушатели.
2. **`onStart()`**\
   Activity становится видимой, но пользователь ещё не взаимодействует.\
   Можно запускать UI-анимации, регистрировать broadcast-receiver’ы.
3. **`onResume()`**\
   Activity получает фокус. Здесь запускаются камеры, воспроизведение, сенсоры, слушатели.
4. **`onPause()`**\
   Activity теряет фокус (например, поверх пришло уведомление или другая Activity).\
   Нужно остановить анимации, сохранение промежуточных данных, отписаться от тяжёлых ресурсов (камера, GPS).\
   Быстро выполняется — система ожидает возврат, иначе возможен ANR.
5. **`onStop()`**\
   Activity больше не видна.\
   Здесь останавливаются фоновые операции, освобождаются ресурсы, снимаются слушатели.
6. **`onDestroy()`**\
   Завершение жизненного цикла: Activity уничтожается навсегда.\
   Может быть вызвано вручную (`finish()`) или системой при нехватке памяти.\
   Используется для финальной очистки.
7. **`onRestart()`**\
   Вызывается, когда Activity возвращается из состояния `Stopped` в `Started` (например, при возвращении из другого экрана).

***

#### Схематично порядок вызовов при разных сценариях

**Первый запуск:**

```
onCreate() → onStart() → onResume()
```

**При сворачивании (домой):**

```
onPause() → onStop()
```

**При возвращении из фона:**

```
onRestart() → onStart() → onResume()
```

**При смене ориентации (конфигурации):**

```
onPause() → onStop() → onDestroy()
onCreate() → onStart() → onResume()
```

(если не переопределено `android:configChanges`).

**При закрытии:**

```
onPause() → onStop() → onDestroy()
```

***

#### Дополнительные детали

* **`savedInstanceState`** используется для сохранения данных при пересоздании Activity (поворот, выгрузка).
* **`ViewModel`** живёт дольше, чем Activity, и сохраняет состояние между пересозданиями.
* Если система убивает процесс в фоне, при следующем запуске `onCreate()` получит `savedInstanceState` с ранее сохранёнными данными.
* Ошибка многих разработчиков: делать тяжёлые операции в `onCreate()` или `onResume()` — это блокирует UI-поток и вызывает ANR.

***

Таким образом, жизненный цикл Activity — это управляемая системой последовательность переходов, обеспечивающая предсказуемое поведение и экономию ресурсов. При тестировании важно проверять корректность переходов между состояниями, восстановление данных и отсутствие утечек при `onStop()`/`onDestroy()`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/mobile/opishite-zhiznennyi-cikl-aktiviti..md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
