Site icon AppTractor

Улучшение времени запуска приложений на Android: уроки Facebook

Улучшение времени запуска приложения — нетривиальная задача и требует глубокого понимания вещей, которые на нее влияют. В этом году команда Google Android и команда приложения Facebook совместно работали над метриками и обменивались подходами для улучшения запуска приложений. В общедоступной документации Google Android содержится много информации об оптимизации запуска приложений. В дополнение к этому мы хотим поделиться тем, как это применялось к приложению Facebook и что помогло им улучшить запуск приложения.

Сейчас Facebook ежемесячно используют более 2.9 миллиарда человек. Facebook помогает людям создавать сообщества и сближает мир. Это место, где люди могут делиться жизненными моментами, узнавать и обсуждать происходящее, налаживать и развивать отношения, а также вместе работать над созданием экономических возможностей.

Разработчики приложений Facebook стремятся к тому, чтобы у людей был лучший опыт и чтобы приложение безупречно работало на всех устройствах в любой стране и в различных сетевых условиях. Работая вместе, команда Google Android и команда Facebook согласовали определение метрик запуска приложений и лучшие практики, и поделились ими в этой статье.

С чего начать

Начните с измерения времени запуска. Это позволит вам узнать, насколько хорош ваш пользовательский опыт при запуске, отслеживать любые изменения, а также понять, сколько стоит вложить в улучшения. В конце концов, время запуска должно быть привязано к удовлетворенности пользователей, их вовлеченности или росту пользовательской базы, чтобы расставить приоритеты для ваших инвестиций.

Android определяет две метрики для измерения времени запуска приложения: время до полного отображения (Time-To-Full-Display, TTFD) и время до начала отображения (Time-To-Initial-Display, TTID). Хотя вы можете дополнительно разделить его на время холодного/теплого старта, этот пост не делает однозначного различия между ними — подход Facebook состоит в том, чтобы измерить и оптимизировать время запуска, которое переживают все пользователи, взаимодействующие с приложением (некоторые из запусков будут холодными, некоторые теплыми).

Время до полного отображения, Time-To-Full-Display

TTFD фиксирует время, когда ваше приложение завершило рендеринг и готово к взаимодействию с пользователем и работе, возможно, включая загрузку контента из  хранилища или сети. Это может занять некоторое время в медленных сетях и может зависеть от того, на какой экран попадают ваши пользователи. Таким образом, может быть полезно показать что-то сразу и позволить пользователям увидеть, что прогресс идет, что подводит нас к TTID…

Время до начального отображения, Time-To-Initial-Display

TTID фиксирует время, в течение которого ваше приложение отрисовывает фон, навигацию, любой быстро загружаемый локальный контент, заполнители для более медленного локального контента или контента, поступающего из сети. TTID показывает, когда пользователи могут перемещаться и добираться туда, куда они хотят.

Не меняйте слишком много: одна вещь, на которую следует обратить внимание — это визуальное переключение контента вашего приложения между TTID и TTFD. Например, можно показывать кэшированное содержимое, а затем отключать его, когда поступает сетевой контент. Это может раздражать и расстраивать пользователей, поэтому убедитесь, что в TTID есть достаточно значимого контента, чтобы показать пользователям как можно больше того, чего стоит ожидать от TTFD.

Сосредоточьтесь на успехе пользователей

Пользователи обращаются к вашему приложению за контентом, загрузка которого может занять некоторое время, и вы хотите доставить им этот контент как можно быстрее.

Разработчики приложений Facebook сосредотачиваются на метрике, основанной на времени до полного отображения (TTFD), в которой есть весь контент и изображения, потому что это и есть полный опыт того, ради чего пользователи пришли в приложение. Если сетевой запрос контента или изображений занимает много времени или терпит неудачу, разработчики хотят знать об этом, чтобы они могли улучшить в процессе запуска.

Какова хорошая цель для TTID и TTFD?

Метрика запуска Facebook — это процент запусков приложения, которые они считают «плохими», то есть любой запуск, для которого TTFD превышает 2.5 секунды, ИЛИ любая часть запуска, которая не удалась (например, не удается загрузить изображение или приложение дает сбой). Facebook фокусируется на снижении этого процента неудачных запусков либо путем улучшения успешных запусков, которые занимают более 2.5 секунд, либо путем устранения проблем, вызывающих неудачные запуски. Метрика в 2.5 секунды была выбрана на основе исследования, которое показало, что это имеет значение для пользователей Facebook (это также соответствует метрике Largest Contentful Paint (LCP) в рекомендациях Web Vitals для веб-сайтов).

Включение полного опыта в TTFD, особенно любых сетевых вызовов для получения недавнего контента, может сделать ваш показатель запуска очень медленными по сравнению с TTID. На самом деле это хорошо! Он представляет реальный опыт пользователей вашего приложения. Усовершенствования, которые вы вносите в это приложение, могут способствовать более активному использованию и восприятию пользователями производительности вашего приложения, как это было в Facebook.

Измерение TTFD может быть сложной задачей в зависимости от вашего приложения. Если это слишком сложно, можно начать с Time To Initial Display. Это может привести к потере данных о производительности загрузки части вашего контента, если у вас есть заполнители или изображения, но хорошо начать с чего-то, даже если это всего лишь часть того, что ваши пользователи видят при взаимодействии с вашим приложением каждый день.

Инструментарий TTID

В Android 4.4 (уровень API 19) и выше logcat предоставляет значение Displayed, фиксирующее время, прошедшее между запуском процесса и завершением отрисовки первого кадра соответствующей Activity на экране.

Строка лога выглядит примерно так:

ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms

Инструментарий TTFD

Чтобы использовать TTFD, вызовите reportFullyDrawn() в Activity после того, как весь ваш контент появится на экране. Не забудьте включить любой контент, который заменяет заполнители, а также любые изображения, которые вы визуализируете (обязательно учитывайте, когда отображается само изображение, а не только его плейсхолдер). Как только вы используете reportFullyDrawn(), вы можете увидеть это в logcat:

ActivityManager: Fully drawn {package}/.MainActivity: +1s54ms

Рекомендации разработчиков Facebook

Разработчики приложений Facebook уже много лет оптимизируют приложение для миллиардов пользователей на множестве устройств, платформ и стран. В этом разделе рассказывается о некоторых ключевых уроках, которые разработчики приложений Facebook применили для оптимизации запуска своих приложений.

Рекомендации от команды Google Android

Рекомендации команды Google Android по измерению и оптимизации запуска приложений доступны в общедоступных документах: App startup time. В этом разделе обобщены некоторые ключевые моменты, которые связаны с приведенными выше рекомендациями Facebook, которые следует учитывать всем разработчикам приложений для Android.

Резюме

В этой статье описаны некоторые ключевые показатели запуска и передовые практики по улучшению опыта, которые помогают улучшить вовлеченность пользователей  приложения Facebook для Android. В ней также представляются метрики, библиотеки и инструменты, рекомендованные командой Google Android. Любое приложение для Android выиграет от применения некоторых из стратегий, описанных в статье. Измерьте и сделайте запуск вашего приложения приятным и быстрым для ваших пользователей!

Источник

Exit mobile version