Как мы сделали инициализацию библиотек в Ozon Job Android асинхронной
Крупные мобильные приложения Ozon Tech сейчас — это десятки своих внутренних библиотек (OzonID, UiKit, OzonMaps, OzonPushSDK, Fintech и другие). Их последовательная инициализация замедляет запуск приложения.
Была идея: сделать инициализацию библиотек асинхронной, но при этом безопасной. Для этого сделали универсальный Initializer с возможностью асинхронного запуска и CycleDetector зависимостей, механизм переноса состояния графа инициализации между потоками, добавили оптимизации для избежания взаимных блокировок, а также плагин для защиты библиотек от преждевременного обращения к ним. После двух итераций внедрения и устранения циклических зависимостей — выкатили в прод.
Результат: ожидали ускорение 250–500 мс. По факту мы получили уменьшение времени холодного старта в несколько раз лучше ожиданий, при сохранении всех метрик качества.
Спикер
Дмитрий ГлаголевРуководитель группы разработки мобильных приложений · Ozon