Android Live 🤖
5.8K subscribers
49 photos
763 links
Самые свежие новости, новинки и тренды Android от практикующего разработчика.


Автор: @al_gorshkov,
Чат: @android_live_chat
Личный блог: @al_gorshkov_blog

По рекламе: @ek_gorshkova
Download Telegram
​​Как узнать время старта приложения?
#performance

Тестирование времени запуска приложения — это довольно популярная задача оптимизации приложения. От времени старта зависит общее впечатление от использования продукта.

Совсем недавно Google анонсировал библиотеку App Startup, которая позволяет правильно инициализировать компоненты для приложения.
Но чтобы понять, насколько улучшилось время запуска, нужно знать результаты до и после её применения.

Самым распространённым подходом является использование функции System.currentTimeMillis(), при помощи которой можно залогировать время, и вычислить разницу межу нужными нам кусками кода.
Но главная проблема в том, что мы не можем узнать время запуска до начала вызова нашего кода, соответственно и до вызова этой функции.

Есть хороший подход, описанный в этой статье. Автор делится командами adb, которые позволяют понять время запуска приложения с момента клика на иконку.

Итоговая команда выглядит так:

adb shell am start-activity -W -n com.android.samples.mytest/.MainActivity | grep "TotalTime" | cut -d ' ' -f 2

Кроме того в статье, говорится о том, как избежать ситуацию с троттлингом процессора, что очень сильно может помешать тестированию производительности приложения.
​​Измерение производительности Jetpack Compose
#compose #performance

Интересная статья, где автор перед добавлением Jetpack Compose в проект решил проверить, насколько хорошо у него с производительностью, тестированием и временем сборки.

Было протестировано 4 варианта:
• вариант с одним Compose;
• xml-файл с базовым ComposeView;
• xml-файл с RecyclerView и адаптером;
• вариант с одним xml.

А прочитать результаты всех измерений и тестирования можно в этой статье.
​​Background Task Inspector
#tools #performance #beginners

Попался отличный гайд, который расскажет о том, что из себя представляет Background Task Inspector и как им пользоваться.

Вообще в Android Studio есть несколько полезных инструментов, и Background Task Inspector — второй по популярности (после Database Inspector), которым я пользуюсь. Его суть заключается в показе текущего статуса выполнения работ из WorkManager, а также связи, которые имеются между этими работами. Это заметно облегчает отладку, ведь фоновые операции протестировать не всегда просто.

Сама статья и примеры приложения тут.
​​Как измерить время старта приложения?
#library #performance

Для большинства приложений время старта — очень важная характеристика, которая влияет на удовлетворённость пользователя этим приложением.
Конечно, это не будет решающей метрикой, благодаря которой пользователь выставит вам негативную оценку в Google Play, но всё же важно, чтобы приложение запускалось как можно быстрее. А измерение этой метрики — довольно нетривиальная задача, и важно сделать это правильно.

Вот вам отличная статья, которая рассматривает различные способы для измерения времени запуска приложения. Это и анализ на собственном устройстве, и аналитика, которая собирается при помощи Google Play и Firebase, и кастомные решения.
HashMap для Jetpack Compose
#compose #performance

Интересная статья, где рассказывается про минусы стандартной HashMap в контектсте использования Jetpack Compose.

При использовании mutableMapOf() под капотом создаётся LinkedHashMap(), которая довольна хороша, но имеет недостаток: при каждом новом добавлении элемента создаётся LinkedHashMapEntry, из-за чего структура не очень memory-friendly.

Ну и сходу предлагается использовать другую структуру — ScatterMap, у которой подобных недостатков нет. В статье есть и замеры, и описывается главный недостаток этого подхода: структура хоть и map-based, но не наследуется от привычного нам Map, хотя и имеет подобные ему классы.

Стоит ли бежать заменять мапы на неё? Безусловно, нет: сам автор признаётся, что вам просто стоит иметь в виду, что такая структура существует и вы вспомните о ней, когда аллокация памяти будет очень критичным моментом.