JioSaavn 将应用启动时间缩短 30%,DAU 因此增加

JioSaavn 成立于 2007 年,是领先的音乐和播客音频流媒体服务。他们拥有 900 多个唱片公司合作伙伴,以 16 种语言播放 8000 多万首歌曲。JioSaavn 应用还提供 6 种印度地区语言版本。

JioSaavn 的技术堆栈支持超过 1 亿的月活跃用户 (MAU),其运营规模和速度都很快。这些用户通常使用资源有限的 Android 手机,因此他们的用户体验对 JioSaavn 团队来说至关重要。

挑战

从工程角度来看,在资源受限的环境中(例如在中低端移动设备中)进行优化既充满挑战又令人兴奋。JioSaavn 面临的挑战是优化其主要目标受众的用户体验,这些受众使用中低端移动设备,主要分布在印度的二线和三线城市。

分析漏斗后发现,相当一部分用户会启动应用但不听歌。团队确定应用启动时间是造成此问题的原因。因此,缩短应用启动时间与应用听众数量的增加相关。

他们是如何做到的

JioSaavn 依靠全面的分析和一套强大的工具(如 Perfetto、dumpsys 等)来分析此问题并找到可持续的解决方案。团队使用两个原则来应对这一挑战——并行工作和延迟处理。

在 Google 的分析帮助下,团队对任务进行了优先级排序:

  • 使用 systrace 和 perfetto 研究应用流程,分析痛点,验证应用启动时间的改进。
  • 延迟初始化:识别可以延迟到主页显示后再初始化的片段/实例/类,包括:
    • 广告
    • 音乐服务(前台服务)和播放器资源(例如 Exoplayer、缓存播放器队列等)
    • 启动时最小化的播放器片段。
  • 按需初始化:按需初始化各种库(例如 Facebook 库)。
  • viewStubs:视图膨胀和资源加载很繁重。团队使用 viewStubs 扁平化了布局并将图片转换为 webP。
  • 工作线程:将一些不需要 UI 线程的任务移动到后台线程,以释放 UI 线程。
  • 拆分缓存数据 - 从文件中读取和解析大量缓存数据需要很长时间。团队将其拆分为关键数据(主页显示必需)和非关键数据。
  • Async LayoutInflater:使用 Async LayoutInflater 预膨胀了主页 recyclerview 所需的一些视图。

使用的工具 - Perfetto、Systrace、Google Play Vitals、Android Studio Profilers、Firebase Performance SDK

成果

JioSaavn 团队通过多个应用版本发布了这些更改,以保持应用稳定性。他们取得了以下成果:

  • 所有设备的应用启动时间缩短 30%,中低端设备缩短 35% - 40%。
  • 主屏幕观看人数/DAU 增加 5%,从而降低了跳出率。

这次优化工作让整个团队凝聚在一起。通过详细的演练,让团队熟悉了这些变化,并培养了以性能为中心的应用开发方法。

“JioSaavn 旨在改善来自印度各地不同地区、经济水平各异的用户的聆听体验。
因此,超越他们所在地区的移动连接基础设施,并优化跨用户设备功能的用户体验是我们不断努力的挑战。感谢 Google 开发者关系的指导,我们得以在这方面迈出决定性的一步。”

– JioSaavn 产品团队