Особенности библиотеки 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.