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

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

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

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

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

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

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

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

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