Компания JioSaavn, основанная в 2007 году, является ведущим сервисом потокового аудио для музыки и подкастов. Они сотрудничают с более чем 900 лейблами и транслируют более 80 миллионов треков на 16 языках. Приложение JioSaavn также доступно на 6 региональных индийских языках.
Благодаря технологическому стеку, поддерживающему более 100 миллионов активных пользователей в месяц (MAU), JioSaavn работает в масштабе и на скорости. Эта аудитория обычно имеет телефоны Android с ограниченными ресурсами, поэтому их пользовательский опыт имеет первостепенное значение для команды JioSaavn.
Вызов
Оптимизация в условиях ограничений, подобных тем, которые встречаются в мобильных устройствах бюджетного и среднего ценового сегмента, может быть одновременно сложной и захватывающей с инженерной точки зрения. Задача, с которой столкнулась JioSaavn, заключалась в оптимизации пользовательского опыта для своей ключевой целевой аудитории с использованием мобильных устройств бюджетного и среднего класса, которые в основном встречаются в городах Индии 2 и 3 уровня.
Анализируя воронку, стало очевидно, что существует значительная часть пользователей, которые запустят приложение, но не послушают песню. Команда определила, что причиной этого является время запуска приложения. Таким образом, улучшение времени запуска приложения было связано с увеличением количества слушателей приложения.
Как они это сделали
JioSaavn полагалась на комплексный анализ и надежный набор инструментов, таких как Perfetto, dumpsys и т. д., чтобы проанализировать эту проблему и найти устойчивое решение. Команда подошла к этой задаче, используя два принципа — распараллеливать работу и лениться.
С помощью анализа Google команда расставила задачи по приоритетности:
- Использовал systrace и perfetto для изучения потока работы приложения, анализа болевых точек и проверки улучшения времени запуска приложения.
- Отложенная инициализация: Инициализация идентифицированных фрагментов/экземпляров/классов, которая может быть отложена до отображения домашней страницы.
- Объявления
- Музыкальный сервис (служба переднего плана) и ресурсы проигрывателя (например, Exoplayer, кэшированная очередь проигрывателя и т. д.)
- Фрагмент игрока, который свёрнут во время запуска.
- Инициализация по требованию: различных библиотек по мере необходимости (например, Facebook lib).
- viewStubs: Представление Инфляция и загрузка ресурсов были тяжелыми. Команда сгладила свои макеты с помощью viewStubs и преобразовала изображения в webP.
- Рабочий поток: некоторые задачи, для которых не требовался поток пользовательского интерфейса, были перенесены в потоки b/g, чтобы освободить поток пользовательского интерфейса.
- Разделение данных кэша. Чтение и анализ огромных кэшированных данных из файла занимает много времени. Команда разделила их на критические (необходимые для показа домашней страницы) и некритические данные.
- Async LayoutInflater: некоторые представления, необходимые для просмотра повторного использования домашней страницы, были предварительно заполнены с помощью Async LayoutInflater.
Используемые инструменты: Perfetto, Systrace, Google Play Vitals, профилировщики студии Android, SDK производительности Firebase.
Результаты
Команда JioSaavn выпустила эти изменения в нескольких версиях приложения, чтобы обеспечить стабильность приложения. Они добились следующих результатов -
- Улучшение времени запуска приложений на 30 % на всех устройствах и на 35–40 % на устройствах нижнего и среднего класса.
- Улучшение на 5 % в программах просмотра главного экрана/DAU, что снижает показатель отказов.
Это упражнение по оптимизации объединило всю команду. Подробные пошаговые руководства были проведены, чтобы команда чувствовала себя комфортно при внесении изменений и привила подход, ориентированный на производительность, к приложению.
«JioSaavn стремится улучшить качество прослушивания для наших пользователей из разных регионов.
и городов Индии, и охватывают весь спектр с точки зрения доступности. Таким образом, преодоление инфраструктуры мобильной связи в их регионе и оптимизация взаимодействия с пользователем с учетом возможностей устройств пользователей — это постоянная задача, над которой мы работаем. Благодаря руководству Google по связям с разработчиками мы смогли сделать решительный шаг в этом направлении».– Команда продуктов JioSaavn