Особенности библиотеки AppMetrica

Внимание.

Это архивная версия документации. Актуальная документация по всем платформам находится здесь.

Библиотека AppMetrica состоит из двух частей: клиентской и сервисной. При этом в них есть особенности, которые необходимо учитывать при инициализации:
Клиентская часть

Обеспечивает предварительную валидацию данных и передачу их сервисной части.

Экземпляр клиентской части создается для каждого процесса в приложении.

Сервисная часть

Отвечает за хранение и отправку данных на сервер.

Запускается в отдельном процессе. Поэтому AppMetrica:
  • Минимально влияет на производительность и количество занимаемой памяти.
  • Не зависит от стабильности работы приложения. Это позволяет сохранять данные и отправлять их на сервер в случае крэша и нестабильной работы приложения.

Рекомендации по инициализации

  • Если в приложении есть несколько процессов, инициализируйте библиотеку с одинаковой конфигурацией для каждого процесса. Иначе конфигурация может зависеть от того, какой из процессов запустится раньше.
    Примечание. Для отправки данных можно использовать репортеры. Их можно инициализировать с разной конфигурацией. Подробнее в разделе Отправка статистики на дополнительный API key.
  • Инициализируйте библиотеку AppMetrica в методе Application.onCreate(). Так библиотека будет инициализирована в каждом процессе.
    Внимание. Код, который добавлен в метод Application.onCreate(), выполняется для всех процессов. Если после интеграции сторонней библиотеки (например, Firebase Cloud Messaging) возникает ошибка инициализации, убедитесь, что сторонняя библиотека инициализируется только в главном процессе. Подробнее в разделе Описание ошибок.
  • Учитывайте, что экземпляр ContentProvider создается до экземпляра Application. Если вы инициализируете библиотеку в методе Application.onCreate(), отправить данные из метода ContentProvider.onCreate() не получится.
  • Не добавляйте в метод Application.onCreate() код, который не должен выполняться больше одного раза. Такой код выполняйте при создании других компонентов или вынесите в отдельный Service.
  • Избегайте длительных операций в методе Application.onCreate() и не инициализируйте в нем другие библиотеки. Время выполнения этого метода напрямую влияет на скорость запуска первого Activity, Service или Receiver.

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