---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://appmetrica.yandex.com.tr/docs/en/sdk/android/analytics/android-listen.md
  - https://appmetrica.yandex.com.tr/docs/ru/sdk/android/analytics/android-listen.md
---
> **Documentation Index:** Fetch the complete configuration index at https://appmetrica.yandex.com.tr/docs/ru/llms.txt

# Отслеживание активности пользователей

<!-- source: ru/sdk/_includes/listen-intro.md -->
Сессия в AppMetrica — период взаимодействия пользователя с приложением.

**Фоновая сессия**

Фоновая сессия начинается с инициализации AppMetrica SDK.

Если во время фоновой сессии AppMetrica получила системное событие [`onResume()`](https://developer.android.com/guide/components/activities/activity-lifecycle#onresume) для Android или [`UIApplicationDidBecomeActiveNotification`](https://developer.apple.com/documentation/uikit/uiapplicationdidbecomeactivenotification) для iOS, то начинается пользовательская сессия.

Все события, которые были отправлены до системных событий, относятся к фоновой сессии.

Примеры фоновой сессии:
  
- Период от нажатия на иконку приложения до отображения интерфейса.
- Запуск сервисов, принимающих push-уведомления.

**Пользовательская сессия**

Пользовательская сессия начинается, когда AppMetrica получает системные события:

- Для Android: [`onResume()`](https://developer.android.com/guide/components/activities/activity-lifecycle#onresume).
- Для iOS: [`UIApplicationDidBecomeActiveNotification`](https://developer.apple.com/documentation/uikit/uiapplicationdidbecomeactivenotification).

Пользовательская сессия заканчивается, когда истекает таймаут сессии. Таймаут сессии отсчитывается с момента сворачивания приложения.

Все события, которые были отправлены после системных событий, относятся к пользовательской сессии.

По умолчанию AppMetrica считает сессию новой, если пользователь вернулся в приложение через [продолжительный промежуток](*timeout-session) времени после того, как приложение переключилось в фоновый режим (пользователь свернул приложение, открыл системные настройки).
<!-- endsource: ru/sdk/_includes/listen-intro.md -->

## Установка длительности таймаута сессии

<!-- source: ru/sdk/_includes/timeout-notify-listen.md -->
Длительность таймаута — период, который должен пройти с момента сворачивания приложения до его следующего открытия. Длительность таймаута настраивается в SDK.

- Если приложение будет открыто заново до истечения таймаута — продолжится текущая сессия.
- Если приложение будет открыто заново после истечения таймаута — начнется новая сессия.
<!-- endsource: ru/sdk/_includes/timeout-notify-listen.md -->

По умолчанию длительность таймаута сессии равна 10 секундам. Это минимально допустимое значение параметра `sessionTimeout`.

Чтобы изменить длительность таймаута, передайте значение в секундах в метод `withSessionTimeout(int sessionTimeout)` при создании расширенной конфигурации библиотеки.

{% list tabs group=instructions %}

- Kotlin

  ```kotlin translate=no
  // Creating an extended library configuration.
  val config = AppMetricaConfig.newConfigBuilder(API_KEY)
      // Setting the length of the session timeout.
      .withSessionTimeout(15)
      .build()
  // Initializing the AppMetrica SDK.
  AppMetrica.activate(applicationContext, config)
  ```

- Java

  ```java translate=no
  // Creating an extended library configuration.
  AppMetricaConfig config = AppMetricaConfig.newConfigBuilder(API_KEY)
          // Setting the length of the session timeout.
          .withSessionTimeout(15)
          .build();
  // Initializing the AppMetrica SDK.
  AppMetrica.activate(getApplicationContext(), config);
  ```

{% endlist %}

## Отслеживание жизненного цикла приложения {#listen}

Если для приложения минимальная версия Android задана 4.0 или выше, то библиотека AppMetrica может отслеживать жизненный цикл приложения в автоматическом режиме — после инициализации библиотеки вызовите метод `AppMetrica.enableActivityAutoTracking(Application application)`:

{% list tabs group=instructions %}

- Kotlin

  ```kotlin translate=no
  class YourApplication : Application() {
      override fun onCreate() {
          super.onCreate()

          // Initializing the AppMetrica SDK.
          AppMetrica.activate(...)
          // Automatic tracking user activity.
          AppMetrica.enableActivityAutoTracking(this)
      }
  }
  ```

- Java

  ```java translate=no
  public class YourApplication extends Application {
      @Override
      public void onCreate() {
          super.onCreate();

          // Initializing the AppMetrica SDK.
          AppMetrica.activate(...);
          // Automatic tracking user activity.
          AppMetrica.enableActivityAutoTracking(this);
      }
  }
  ```

{% endlist %}

{% note info %}

Автоматическое отслеживание активности работает только для главного API key. При отправке статистики на дополнительный API key используйте методы интерфейса IReporter.

{% endnote %}

Если заданная в приложении минимальная версия Android ниже 4.0, используйте следующие методы: `AppMetrica.resumeSession(activity)` и `AppMetrica.pauseSession(activity)` в соответствующих методах ваших Activity: `onResume()` и `onPause()`. При использовании этих методов необходимо отслеживать, чтобы активная сессия всегда завершалась вызовом метода `AppMetrica.pauseSession(activity)`. Если метод не вызван, библиотека считает сессию активной и совершает регулярный обмен данными с сервисной частью AppMetrica. Это может привести к некорректному отслеживанию длительности сессии и повышению энергопотребления.

Пример:

{% list tabs group=instructions %}

- Kotlin

  ```kotlin translate=no
  class YourActivity : Activity() {
      override fun onResume() {
          super.onResume()
          AppMetrica.resumeSession(this)
      }

      override fun onPause() {
          AppMetrica.pauseSession(this)
          super.onPause()
      }
  }
  ```

- Java

  ```java translate=no
  public class YourActivity extends Activity {
      @Override
      protected void onResume() {
          super.onResume();
          AppMetrica.resumeSession(this);
      }

      @Override
      protected void onPause() {
          AppMetrica.pauseSession(this);
          super.onPause();
      }
  }
  ```

{% endlist %}

## Работа с дополнительным API key

С помощью отправки данных на дополнительный API key можно управлять доступом к статистике. Для передачи событий используйте репортеры. Подробнее см. в разделе [Примеры использования методов](https://appmetrica.yandex.com.tr/docs/ru/sdk/android/analytics/android-operations.md).

Для корректного отслеживания сессий взаимодействия пользователя с приложением настройте отправку событий о начале и приостановке сессии для каждого репортера. Для этого используйте методы `resumeSession()` и `pauseSession()` интерфейса IReporter в реализации `onResume()` и `onPause()` ваших Activity:

{% list tabs group=instructions %}

- Kotlin

  ```kotlin translate=no
  class YourActivity : Activity() {
      override fun onResume() {
          super.onResume()
          AppMetrica.getReporter(applicationContext, ANOTHER_API_KEY).resumeSession()
      }

      override fun onPause() {
          AppMetrica.getReporter(applicationContext, ANOTHER_API_KEY).pauseSession()
          super.onPause()
      }
  }
  ```

- Java

  ```java translate=no
  public class YourActivity extends Activity {
      @Override
      protected void onResume() {
          super.onResume();
          AppMetrica.getReporter(getApplicationContext(), ANOTHER_API_KEY).resumeSession();
      }

      @Override
      protected void onPause() {
          AppMetrica.getReporter(getApplicationContext(), ANOTHER_API_KEY).pauseSession();
          super.onPause();
      }
  }
  ```

{% endlist %}

Это поможет библиотеке правильно отслеживать:

- количество активных пользователей;
- продолжительность сессий;
- частоту использования приложения.

<!-- source: ru/_includes/feedback-button-3.md -->
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.

<a href="../../../troubleshooting/feedback-new">
  <span class="button">Написать в службу поддержки</span>
</a>

<a href="../../../troubleshooting/feedback-docs">
  <span class="button">Предложить улучшение для документации</span>
</a>
<!-- endsource: ru/_includes/feedback-button-3.md -->

[*timeout-session]: Таймаут сессии, который настраивается в SDK.