JioSaavn 将应用启动时间缩短了 30%,将日活用户数量提高了 30%
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
JioSaavn 成立于 2007 年,是一家领先的音乐和播客音频在线播放服务公司。他们与 900 多家唱片公司合作,以 16 种语言在线播放 8000 多万首曲目。JioSaavn 应用还提供 6 种印度地区性语言。
JioSaavn 拥有支持超过 1 亿月活跃用户 (MAU) 的技术栈,能够大规模快速地运营。这类受众群体通常使用的 Android 手机资源有限,因此他们的用户体验对 JioSaavn 团队至关重要。
面临的挑战
从工程的角度来看,在存在限制的环境(例如中端移动设备中发现的那些)中进行优化可能既有挑战性,又令人振奋。JioSaavn 面临的挑战是使用中低端移动设备(主要在印度的二三线城市)优化其主要目标受众群体的用户体验。
分析该漏斗后发现,有相当一部分用户会启动应用,但不会听歌。该团队确定应用启动时间是导致此问题的原因。因此,缩短应用启动时间有助于提高应用的监听器数量。
具体做法
JioSaavn 依靠全面的分析和一套强大的工具(如 Perfetto、dumpsys 等)来分析这个问题,并得出一个可持续的解决方案。该团队根据两个原则解决了这一挑战:并行工作和懒人。
在 Google 的分析的帮助下,该团队确定了各项任务的优先顺序,
- 使用 systrace 和 perfetto 研究应用流程、分析痛点并验证应用启动时间的缩短情况。
- 延迟初始化:识别了可能会延迟到显示首页的 fragment/实例/类初始化 -
- 广告
- 音乐服务(前台服务)和播放器资源(例如 Exoplayer、缓存的播放器队列等)
- Player Fragment,在启动时最小化。
- 按需初始化:根据需要进行各种库的初始化(例如 Facebook 库)。
- viewStubs:视图膨胀和资源加载过多。该团队使用 viewStub 扁平化布局,并将图片转换为 webP。
- 工作器线程:一些不需要界面线程的任务已移至 b/g 线程以释放界面线程。
- 拆分缓存数据 - 从文件中读取和解析庞大的缓存数据需要花费大量时间。该团队将其拆分为关键数据(显示首页所必需的数据)和非关键数据。
- 异步 LayoutInflater:首页 recyclerview 所需的一些视图已使用 Async LayoutInflater 预先扩充。
使用的工具 - Perfetto、Systrace、Google Play Vitals、Android Studio 性能分析器、Firebase 性能 SDK
成果
JioSaavn 团队针对多个应用版本发布了这些更改,以保持应用的稳定性。他们取得了以下成效 -
- 所有设备上的应用启动时间缩短了 30%,中低端设备的启动时间缩短了 35-40%。
- 主屏幕浏览人数/ DAU 的提升幅度为 5%,从而降低了跳出率。
这次优化练习将整个团队凝聚在一起。他们进行了详细的演示,让团队适应这些变化,并打造以效果为中心的应用策略。
“JioSaavn 旨在为来自印度各个地区和城市的用户提供更好的聆听体验,
并且价格实惠。因此,越过其所在区域的移动网络连接基础架构,并根据用户的设备功能优化用户体验,是我们的一贯挑战。在 Google 开发者关系的指导下,我们得以朝着这个方向迈出了坚实的一步。”
- JioSaavn 产品团队
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-27。
[null,null,["最后更新时间 (UTC):2025-07-27。"],[],[],null,["# JioSaavn increases DAUs by improving app startup time by 30%\n\nFounded in 2007, JioSaavn is a leading audio streaming service for music and podcasts. They have 900+ label partnerships and stream 80+ million tracks in 16 languages. JioSaavn app is also available in 6 regional Indian languages.\n\nWith a tech stack that supports over 100 million monthly active users (MAUs), JioSaavn operates at scale and speed. This audience usually has resource-limited Android phones, making their user experience of paramount importance to the JioSaavn team.\n\nThe Challenge\n-------------\n\nOptimizing in an environment of constraints, like those found in low-mid end mobile devices, can be both challenging and exciting from an engineering perspective. The challenge JioSaavn faced was to optimize user experience for their key target audience using low-mid end mobile devices and primarily found in Tier 2 \\& 3 cities of India.\n\nAnalysing the funnel, it was evident that there was a considerable section of users who would launch the app but not listen to a song. The team determined the app startup time to be the cause for this. Thus, improving the app startup time was associated with an increase in the number of listeners on the app.\n\nHow They Did It\n---------------\n\nJioSaavn relied on comprehensive analysis and a robust set of tools like Perfetto, dumpsys, etc to analyze this problem and arrive at a sustainable solution. The team approached this challenge using two principles - parallelize work and be lazy.\n\nWith the help of Google's analysis, the team prioritized tasks -\n\n- Used systrace and perfetto to study the app flow, analyze pain points, validate improvements in app startup time.\n- Delayed initialization: Identified fragments/instances/classes initialization that could be delayed until the homepage is displayed -\n - Ads\n - Music Service (Foreground Service) and Player Resources (e.g. Exoplayer, cached player queue etc)\n - Player Fragment which is minimized at the time of launch.\n- On-demand initialization: of various libraries as and when the library is required (eg Facebook lib).\n- viewStubs: View Inflation and resource loading was heavy. The team flattened their layouts using viewStubs and converted the images to webP.\n- Worker thread: Some tasks which didn't require UI thread were moved to b/g threads to free up the UI thread.\n- Split Cache Data - Reading and parsing huge cached data from a file takes a lot of time. The team split it into critical (necessary for showing homepage) and non-critical data.\n- Async LayoutInflater: Some of the views required for homepage recyclerview were pre-inflated using Async LayoutInflater.\n\nTools Used - Perfetto, Systrace, Google play vitals, Android studio Profilers, Firebase performance SDK\n\nResults\n-------\n\nThe JioSaavn team released these changes over multiple versions of the app to maintain app stability. They achieved the following results -\n\n- 30% improvement in app startup time on all devices and 35 - 40% in low-mid end devices.\n- 5% improvement in Home Screen Viewers/ DAU, thus reducing the bounce rate.\n\nThis optimization exercise brought the whole team together. Detailed walkthroughs were done to make the team comfortable with the changes, and inculcate a performance-focused approach towards the app.\n\u003e \"JioSaavn aims to better the listening experience of our users who come from various regions \n\u003e\n\u003e and cities in India, and span across the spectrum\n\u003e in terms of affordability. Thus going past the mobile connectivity\n\u003e infrastructure of their region, and optimizing the user experience across the\n\u003e users' device capabilities is a constant challenge we work for.\n\u003e Thanks to Google's developer relations guidance, we were able to take a definitive step\n\u003e in this direction.\"\n\u003e\n\u003e **-- JioSaavn Product Team**"]]