Введение
ShareChat — ведущая платформа социальных сетей в Индии, которая позволяет пользователям делиться своим мнением, документировать свою жизнь и заводить новых друзей на родном языке. Другие функции включают чаты и личные сообщения, позволяющие пользователям обмениваться видео, шутками, песнями и другим социальным контентом на языковой основе. Ставя целью стать инициатором интернет-революции в Индии, ShareChat меняет то, как следующий миллиард пользователей будет взаимодействовать в Интернете.
Приложение в цифрах
- Более 100 миллионов загрузок
- 180+ миллионов активных пользователей в месяц
- Более 32 миллионов создателей контента
- 15 разных индийских языков
- Ежедневно создается около 1,5 миллиона сообщений.
Вызов
По мере того, как ShareChat ежедневно становился любимым тысячами людей, приложение столкнулось с проблемой последовательной доставки новых кадров, что привело к плохому времени отклика, что усложнило взаимодействие с пользователем.
В результате в приложении увеличилось количество пропущенных или задержанных кадров (также известное как «Jank»). Исправление этих проблем с зависаниями путем улучшения медленных и зависающих кадров имело решающее значение для обеспечения бесперебойной работы всех пользователей. Это также сыграет важную роль в том, чтобы заставить пользователей проводить больше времени в приложении, повысить вовлеченность и, в свою очередь, улучшить рейтинг ShareChat в Android Play Store.
Как они это сделали
ShareChat работал с командой Google по связям с разработчиками, чтобы уменьшить спам и добиться положительного влияния на бизнес за счет улучшения медленных и зависших кадров (Jank) в приложении. В частности, они работали над улучшением следующих проблем:
Общий пул RecyclerView . При профилировании было замечено, что создание разных держателей просмотра занимает больше времени, и чтобы свести это к минимуму, был создан общий пул RecyclerView. Это также помогло снизить затраты зрителей на создание подобных каналов.
Чрезмерный проход по макету . При профилировании также было замечено, что некоторые владельцы просмотров запрашивали дополнительные requestLayouts. В целях оптимизации код был обновлен, чтобы учитывать время создания, а не каждую привязку, что позволило сэкономить дополнительные затраты на requestLayout.
OverDraw — упрощены макеты, чтобы уменьшить количество слоев и удалить цвета, которые устанавливались отдельно для каждого слоя.
Сглаживание иерархии . Наблюдалось длительное раздувание посредством профилирования и ручной проверки многих экранов. Для решения этой проблемы иерархия была сглажена с помощью ConstraintLayout .
Чрезмерное увеличение просмотров . Во время профилирования обнаружено длительное увеличение времени для определенных просмотров. Эти представления были преобразованы в заглушки.
Удаление тяжелых задач из потока пользовательского интерфейса . Использование профилировщика позволило наблюдать за несколькими местами, где в основном потоке выполнялись тяжелые задачи, например создание SpannableStringBuilder с маркировкой и стилем каждой привязки recyclerView, декодирование BlurHash и т. д. Эти задачи были удален из потока пользовательского интерфейса и перемещен в фоновый поток.
Миграция с Rx на Coroutine . Потребление памяти также приводило к частым вызовам GC, и в потоке RX было очень большое количество потоков >100. Многие варианты использования были перенесены в Coroutine, чтобы исправить эти проблемы.
Использование Coil для загрузки изображений . Glide вызывал проблемы при загрузке изображений, особенно в компонентах, созданных с помощью Jetpack Compose. Также было обнаружено, что при загрузке изображений в LazyColumn полоса порога рендеринга была высокой. Эти случаи привели к использованию Coil для загрузки изображений.
Очистка и рефакторинг старого кода . Удаление старого кода и эксперименты помогли удалить ненужные скрытые представления из пользовательского интерфейса и помогли лучше переписать некоторые экраны.
Результаты
Анализируя области улучшения и определяя стратегии оптимизации, ShareChat может улучшить общее впечатление для пользователей, одновременно повышая уровень вовлеченности и рейтинги в Play Store. Ниже представлен количественный обзор результатов, достигнутых ShareChat:
- Примерно на 45 % уменьшено количество кадров с медленной визуализацией в магазине Play Store.
- Примерно на 30 % меньше «замороженных» кадров в Play Store.
- Частота кадров для каждых 10 тысяч отрисованных кадров уменьшена с 10,72% до 3,98%.
- Прокрутка ленты увеличена на 60 %.
- Общий рейтинг в Магазине увеличился с ~4,0 до 4,3.
- 10% увеличение потребления постов
,«В ShareChat наша цель — стать лучшим приложением для социальных сетей, которое доставляет удовольствие нашим пользователям. Это также означает, что мы должны быть лучшими с точки зрения производительности приложения. Наше сотрудничество с командой Google по связям с разработчиками помогло нам определить области улучшения на наших наиболее часто используемых недорогих пользовательских устройствах. Мы изучили лучшие методы повышения производительности и инструменты для выявления и устранения зависших кадров, зависаний, перерисовки и ошибок ANR».
– Вихан Верма, технический менеджер группы Android в ShareChat
Введение
ShareChat — ведущая платформа социальных сетей в Индии, которая позволяет пользователям делиться своим мнением, документировать свою жизнь и заводить новых друзей на родном языке. Другие функции включают чаты и личные сообщения, позволяющие пользователям обмениваться видео, шутками, песнями и другим социальным контентом на языковой основе. Ставя целью стать инициатором интернет-революции в Индии, ShareChat меняет то, как следующий миллиард пользователей будет взаимодействовать в Интернете.
Приложение в цифрах
- Более 100 миллионов загрузок
- 180+ миллионов активных пользователей в месяц
- Более 32 миллионов создателей контента
- 15 разных индийских языков
- Ежедневно создается около 1,5 миллиона сообщений.
Вызов
По мере того, как ShareChat ежедневно становился любимым тысячами людей, приложение столкнулось с проблемой последовательной доставки новых кадров, что привело к плохому времени отклика, что усложнило взаимодействие с пользователем.
В результате в приложении увеличилось количество пропущенных или задержанных кадров (также известное как «Jank»). Исправление этих проблем с зависаниями путем улучшения медленных и зависающих кадров имело решающее значение для обеспечения бесперебойной работы всех пользователей. Это также сыграет важную роль в том, чтобы заставить пользователей проводить больше времени в приложении, повысить вовлеченность и, в свою очередь, улучшить рейтинг ShareChat в Android Play Store.
Как они это сделали
ShareChat работал с командой Google по связям с разработчиками, чтобы уменьшить спам и добиться положительного влияния на бизнес за счет улучшения медленных и зависших кадров (Jank) в приложении. В частности, они работали над улучшением следующих проблем:
Общий пул RecyclerView . При профилировании было замечено, что создание разных держателей просмотра занимает больше времени, и чтобы свести это к минимуму, был создан общий пул RecyclerView. Это также помогло снизить затраты зрителей на создание подобных каналов.
Чрезмерный проход по макету . При профилировании также было замечено, что некоторые владельцы просмотров запрашивали дополнительные requestLayouts. В целях оптимизации код был обновлен, чтобы учитывать время создания, а не каждую привязку, что позволило сэкономить дополнительные затраты на requestLayout.
OverDraw — упрощены макеты, чтобы уменьшить количество слоев и удалить цвета, которые устанавливались отдельно для каждого слоя.
Сглаживание иерархии . Наблюдалось длительное раздувание посредством профилирования и ручной проверки многих экранов. Для решения этой проблемы иерархия была сглажена с помощью ConstraintLayout .
Чрезмерное увеличение просмотров . Во время профилирования обнаружено длительное увеличение времени для определенных просмотров. Эти представления были преобразованы в заглушки.
Удаление тяжелых задач из потока пользовательского интерфейса . Использование профилировщика позволило наблюдать за несколькими местами, где в основном потоке выполнялись тяжелые задачи, например создание SpannableStringBuilder с маркировкой и стилем каждой привязки recyclerView, декодирование BlurHash и т. д. Эти задачи были удален из потока пользовательского интерфейса и перемещен в фоновый поток.
Миграция с Rx на Coroutine . Потребление памяти также приводило к частым вызовам GC, и в потоке RX было очень большое количество потоков >100. Многие варианты использования были перенесены в Coroutine, чтобы исправить эти проблемы.
Использование Coil для загрузки изображений . Glide вызывал проблемы при загрузке изображений, особенно в компонентах, созданных с помощью Jetpack Compose. Также было обнаружено, что при загрузке изображений в LazyColumn полоса порога рендеринга была высокой. Эти случаи привели к использованию Coil для загрузки изображений.
Очистка и рефакторинг старого кода . Удаление старого кода и эксперименты помогли удалить ненужные скрытые представления из пользовательского интерфейса и помогли лучше переписать некоторые экраны.
Результаты
Анализируя области улучшения и определяя стратегии оптимизации, ShareChat может улучшить общее впечатление для пользователей, одновременно повышая уровень вовлеченности и рейтинги в Play Store. Ниже представлен количественный обзор результатов, достигнутых ShareChat:
- Примерно на 45 % уменьшено количество кадров с медленной визуализацией в магазине Play Store.
- Примерно на 30 % меньше «замороженных» кадров в Play Store.
- Частота кадров для каждых 10 тысяч отрисованных кадров уменьшена с 10,72% до 3,98%.
- Прокрутка ленты увеличена на 60 %.
- Общий рейтинг в Магазине увеличился с ~4,0 до 4,3.
- 10% увеличение потребления постов
,«В ShareChat наша цель — стать лучшим приложением для социальных сетей, которое доставляет удовольствие нашим пользователям. Это также означает, что мы должны быть лучшими с точки зрения производительности приложения. Наше сотрудничество с командой Google по связям с разработчиками помогло нам определить области улучшения на наших наиболее часто используемых недорогих пользовательских устройствах. Мы изучили лучшие методы повышения производительности и инструменты для выявления и устранения зависших кадров, зависаний, перерисовки и ошибок ANR».
– Вихан Верма, технический менеджер группы Android в ShareChat
Введение
ShareChat — ведущая платформа социальных сетей в Индии, которая позволяет пользователям делиться своим мнением, документировать свою жизнь и заводить новых друзей на родном языке. Другие функции включают чаты и личные сообщения, позволяющие пользователям обмениваться видео, шутками, песнями и другим социальным контентом на языковой основе. Ставя целью стать инициатором интернет-революции в Индии, ShareChat меняет то, как следующий миллиард пользователей будет взаимодействовать в Интернете.
Приложение в цифрах
- Более 100 миллионов загрузок
- 180+ миллионов активных пользователей в месяц
- Более 32 миллионов создателей контента
- 15 разных индийских языков
- Ежедневно создается около 1,5 миллиона сообщений.
Вызов
По мере того, как ShareChat ежедневно становился любимым тысячами людей, приложение столкнулось с проблемой последовательной доставки новых кадров, что привело к плохому времени отклика, что усложнило взаимодействие с пользователем.
В результате в приложении увеличилось количество пропущенных или задержанных кадров (также известное как «Jank»). Исправление этих проблем с зависаниями путем улучшения медленных и зависающих кадров имело решающее значение для обеспечения бесперебойной работы всех пользователей. Это также сыграет важную роль в том, чтобы заставить пользователей проводить больше времени в приложении, повысить вовлеченность и, в свою очередь, улучшить рейтинг ShareChat в Android Play Store.
Как они это сделали
ShareChat работал с командой Google по связям с разработчиками, чтобы уменьшить спам и добиться положительного влияния на бизнес за счет улучшения медленных и зависших кадров (Jank) в приложении. В частности, они работали над улучшением следующих проблем:
Общий пул RecyclerView . При профилировании было замечено, что создание разных держателей просмотра занимает больше времени, и чтобы свести это к минимуму, был создан общий пул RecyclerView. Это также помогло снизить затраты зрителей на создание подобных каналов.
Чрезмерный проход по макету . При профилировании также было замечено, что некоторые владельцы просмотров запрашивали дополнительные requestLayouts. В целях оптимизации код был обновлен, чтобы учитывать время создания, а не каждую привязку, что позволило сэкономить дополнительные затраты на requestLayout.
OverDraw — упрощены макеты, чтобы уменьшить количество слоев и удалить цвета, которые устанавливались отдельно для каждого слоя.
Сглаживание иерархии . Наблюдалось длительное раздувание посредством профилирования и ручной проверки многих экранов. Для решения этой проблемы иерархия была сглажена с помощью ConstraintLayout .
Чрезмерное увеличение просмотров . Во время профилирования обнаружено длительное увеличение времени для определенных просмотров. Эти представления были преобразованы в заглушки.
Удаление тяжелых задач из потока пользовательского интерфейса . Использование профилировщика позволило наблюдать за несколькими местами, где в основном потоке выполнялись тяжелые задачи, например создание SpannableStringBuilder с маркировкой и стилем каждой привязки recyclerView, декодирование BlurHash и т. д. Эти задачи были удален из потока пользовательского интерфейса и перемещен в фоновый поток.
Миграция с Rx на Coroutine . Потребление памяти также приводило к частым вызовам GC, и в потоке RX было очень большое количество потоков >100. Многие варианты использования были перенесены в Coroutine, чтобы исправить эти проблемы.
Использование Coil для загрузки изображений . Glide вызывал проблемы при загрузке изображений, особенно в компонентах, созданных с помощью Jetpack Compose. Также было обнаружено, что при загрузке изображений в LazyColumn полоса порога рендеринга была высокой. Эти случаи привели к использованию Coil для загрузки изображений.
Очистка и рефакторинг старого кода . Удаление старого кода и эксперименты помогли удалить ненужные скрытые представления из пользовательского интерфейса и помогли лучше переписать некоторые экраны.
Результаты
Анализируя области улучшения и определяя стратегии оптимизации, ShareChat может улучшить общее впечатление для пользователей, одновременно повышая уровень вовлеченности и рейтинги в Play Store. Ниже представлен количественный обзор результатов, достигнутых ShareChat:
- Примерно на 45 % уменьшено количество кадров с медленной визуализацией в магазине Play Store.
- Примерно на 30 % меньше «замороженных» кадров в Play Store.
- Частота кадров для каждых 10 тысяч отрисованных кадров уменьшена с 10,72% до 3,98%.
- Прокрутка ленты увеличена на 60 %.
- Общий рейтинг в Магазине увеличился с ~4,0 до 4,3.
- 10% увеличение потребления постов
,«В ShareChat наша цель — стать лучшим приложением для социальных сетей, которое доставляет удовольствие нашим пользователям. Это также означает, что мы должны быть лучшими с точки зрения производительности приложения. Наше сотрудничество с командой Google по связям с разработчиками помогло нам определить области улучшения на наших наиболее часто используемых недорогих пользовательских устройствах. Мы изучили лучшие методы повышения производительности и инструменты для выявления и устранения зависших кадров, зависаний, перерисовки и ошибок ANR».
– Вихан Верма, технический менеджер, команда Android в ShareChat
Введение
ShareChat — ведущая платформа социальных сетей в Индии, которая позволяет пользователям делиться своим мнением, документировать свою жизнь и заводить новых друзей на родном языке. Другие функции включают чаты и личные сообщения, позволяющие пользователям обмениваться видео, шутками, песнями и другим социальным контентом на языковой основе. Ставя целью стать инициатором интернет-революции в Индии, ShareChat меняет то, как следующий миллиард пользователей будет взаимодействовать в Интернете.
Приложение в цифрах
- Более 100 миллионов загрузок
- 180+ миллионов активных пользователей в месяц
- Более 32 миллионов создателей контента
- 15 разных индийских языков
- Ежедневно создается около 1,5 миллиона сообщений.
Вызов
По мере того, как ShareChat ежедневно становился любимым тысячами людей, приложение столкнулось с проблемой последовательной доставки новых кадров, что привело к плохому времени отклика, что усложнило взаимодействие с пользователем.
В результате в приложении увеличилось количество пропущенных или задержанных кадров (также известное как «Jank»). Исправление этих проблем с зависаниями путем улучшения медленных и зависающих кадров имело решающее значение для обеспечения бесперебойной работы всех пользователей. Это также сыграет важную роль в том, чтобы заставить пользователей проводить больше времени в приложении, повысить вовлеченность и, в свою очередь, улучшить рейтинг ShareChat в Android Play Store.
Как они это сделали
ShareChat работал с командой Google по связям с разработчиками, чтобы уменьшить спам и добиться положительного влияния на бизнес за счет улучшения медленных и зависших кадров (Jank) в приложении. В частности, они работали над улучшением следующих проблем:
Общий пул RecyclerView . При профилировании было замечено, что создание разных держателей просмотра занимает больше времени, и чтобы свести это к минимуму, был создан общий пул RecyclerView. Это также помогло снизить затраты зрителей на создание аналогичных каналов.
Чрезмерный проход по макету . При профилировании также было замечено, что некоторые владельцы просмотров запрашивали дополнительные requestLayouts. В целях оптимизации код был обновлен, чтобы учитывать время создания, а не каждую привязку, что позволило сэкономить дополнительные затраты на requestLayout.
OverDraw — упрощены макеты, чтобы уменьшить количество слоев и удалить цвета, которые устанавливались отдельно для каждого слоя.
Сглаживание иерархии . Наблюдалось длительное раздувание посредством профилирования и ручной проверки многих экранов. Для решения этой проблемы иерархия была сглажена с помощью ConstraintLayout .
Чрезмерное увеличение просмотров . Во время профилирования обнаружено длительное увеличение времени для определенных просмотров. Эти представления были преобразованы в заглушки.
Удаление тяжелых задач из потока пользовательского интерфейса . Использование профилировщика позволило наблюдать за несколькими местами, где в основном потоке выполнялись тяжелые задачи, например создание SpannableStringBuilder с маркировкой и стилем каждой привязки recyclerView, декодирование BlurHash и т. д. Эти задачи были удален из потока пользовательского интерфейса и перемещен в фоновый поток.
Миграция с Rx на Coroutine . Потребление памяти также приводило к частым вызовам GC, и в потоке RX было очень большое количество потоков >100. Многие варианты использования были перенесены в Coroutine, чтобы исправить эти проблемы.
Использование Coil для загрузки изображений . Glide вызывал проблемы при загрузке изображений, особенно в компонентах, созданных с помощью Jetpack Compose. Также было обнаружено, что при загрузке изображений в LazyColumn полоса порога рендеринга была высокой. Эти случаи привели к использованию Coil для загрузки изображений.
Очистка и рефакторинг старого кода . Удаление старого кода и эксперименты помогли удалить ненужные скрытые представления из пользовательского интерфейса и помогли лучше переписать некоторые экраны.
Результаты
Анализируя области улучшения и определяя стратегии оптимизации, ShareChat может улучшить общее впечатление для пользователей, одновременно повышая уровень вовлеченности и рейтинги в Play Store. Ниже представлен количественный обзор результатов, достигнутых ShareChat:
- Примерно на 45 % уменьшено количество кадров с медленной визуализацией в магазине Play Store.
- Примерно на 30 % меньше «замороженных» кадров в Play Store.
- Частота кадров для каждых 10 тысяч отрисованных кадров уменьшена с 10,72% до 3,98%.
- Прокрутка ленты увеличена на 60 %.
- Общий рейтинг в Магазине увеличился с ~4,0 до 4,3.
- 10% увеличение потребления постов
«В ShareChat наша цель — стать лучшим приложением для социальных сетей, которое доставляет удовольствие нашим пользователям. Это также означает, что мы должны быть лучшими с точки зрения производительности приложения. Наше сотрудничество с командой Google по связям с разработчиками помогло нам определить области улучшения на наших наиболее часто используемых недорогих пользовательских устройствах. Мы изучили лучшие методы повышения производительности и инструменты для выявления и устранения зависших кадров, зависаний, перерисовки и ошибок ANR».
– Вихан Верма, технический менеджер группы Android в ShareChat