New We are sorting MAX channels into categories and territories. Read the news

Инициализация компонентов может занимать более половины времени…

Инициализация компонентов может занимать более половины времени запуска больших Android-приложений. Поэтому нашей задачей для ускорения старта стала асинхронная инициализация: нам было необходимо вынести код на множество потоков параллельно, избегая их блокировки и при этом сохраняя правильную последовательность инициализации.

Привет, это Дмитрий Глаголев, руководитель группы разработки мобильных приложений «Статусы пользователя и Выплаты» приложения Ozon Job. Чтобы решить задачу асинхронной инициализации мы начали с async\\await, ускорились на 30%, но не учли сложный каскад зависимостей. Кратно вырос crash rate при раскатке. А главным минусом стала невозможность масштабирования.

Тогда мы решили написать свой собственный инструмент. Разрешите представить: ✨async-initializers✨

Он состоит из двух частей: runtime-библиотеки AsyncInitializer и Gradle-плагина AsyncInitializers Injector. Библиотека помогает безопасно управлять инициализацией, а Gradle-плагин встраивает необходимые вызовы в код библиотек при сборке. За счёт этого мы сократили количество ручных действий, убрали необходимость управлять последовательностью для всех зависимостей при подготовке компонентов и в два раза ускорили запуск Android-приложения Ozon Job для 75% пользователей.

Подробнее о процессе создания async-initializers — в моём докладе на E-CODE.

➡️ async-initializers на GitHub

❗️Благодарность автору async-initializers — ведущему разработчику Ивану Кураку — можно оставить звёздочками на Github✨

#ozontech_opensource #android
Views: 42
Open in MAX Report an inaccuracy

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go