Оптимизация загрузки приложений в Kotlin

kotlin

Оче­ред­ная статья об уско­рении холод­ного запус­ка при­ложе­ния.

РЕКОМЕНДУЕМ:

Основные момен­ты:

1. Ле­нивая ини­циали­зация. Ленивая ини­циали­зация объ­ектов с помощью Dagger Lazy поз­воля­ет силь­но сок­ратить вре­мя стар­та при­ложе­ния.

2 Фо­новые потоки. Что­бы основной поток при­ложе­ния не тра­тил вре­мя на ини­циали­зацию ком­понен­тов, эту задачу луч­ше вынес­ти в фоновый поток:

2. Оп­тимиза­ция эле­мен­тов UI. Чем мень­ше в UI исполь­зует­ся слож­ных вло­жен­ных друг в дру­га эле­мен­тов интерфей­са, тем быс­трее отра­баты­вает отри­сов­ка. Самый прос­той спо­соб сде­лать это — исполь­зовать Constraint Layout, спо­соб­ный заменить сло­еный пирог дру­гих лей­аутов. При этом самым быс­трым в отри­сов­ке счи­тает­ся FrameLayout. Имен­но его сле­дует исполь­зовать в качес­тве кон­тей­нера.

3. Уда­ление Firebase. Firebase — отличный инс­тру­мент ана­лити­ки, но на его ини­циали­зацию ухо­дит слиш­ком мно­го вре­мени. Если уда­лить Firebase и заменить его более лег­ким решени­ем, то мож­но выиг­рать нес­коль­ко десят­ков мил­лисекунд.

4. Из­бавле­ние от Joda Time. Joda Time — прек­расная биб­лиоте­ка для работы со вре­менем, но в ней исполь­зуют­ся край­не неэф­фектив­ные решения. Луч­ше либо заменить эту биб­лиоте­ку java.time, либо отло­жить ее ини­циали­зацию на как мож­но более поз­днее вре­мя.

5. Ле­нивая ини­циали­зация content provider’ов. Ини­циали­зация про­вай­деров кон­тента (а сре­ди них есть и WorkManager, и тот же Firebase) про­исхо­дит в основном потоке до запус­ка самого при­ложе­ния. Исполь­зуя биб­лиоте­ку Jetpack AndroidX App Startup, ини­циали­зацию content provider’ов мож­но отло­жить и сэконо­мить еще нес­коль­ко десят­ков мил­лисекунд.

6. От­каз от I/O-опе­рации и десери­али­зации JSON в основном потоке. Здесь все прос­то и логич­но.

How OkCredit Android App improved Cold Startup by 70% Anjal Saneen

Понравилась статья? Поделиться с друзьями:
Добавить комментарий