JioSaavn 將應用程式啟動時間縮短 30%,每日活躍使用者人數也因此增加

JioSaavn 成立於 2007 年,是首屈一指的音樂與 Podcast 音訊串流服務。他們與 900 多個唱片公司合作,並推出超過 8,000 萬首曲目,並支援 16 種語言。JioSaavn 應用程式也支援 6 種當地印度語言。

JioSaavn 的技術堆疊支援每月活躍使用者超過 1 億名,因此能大規模快速地運作。一般來說,這類目標對象的 Android 手機資源有限,因此使用者體驗對 JioSaavn 團隊至關重要。

挑戰

從工程的角度來看,要順應瞬息萬變的環境進行最佳化調整,既充滿挑戰又有趣。JioSaavn 面臨的挑戰是要針對低階行動裝置,為主要目標對象提供最佳使用者體驗,主要應用在印度的第 2 層和 3 座城市。

分析漏斗後,即可確定有很大一部分是願意啟動應用程式,但不聆聽歌曲的使用者。因此,我們的團隊判定應用程式啟動時間是解決這個問題的原因。因此,改善應用程式的啟動時間,會造成應用程式的事件監聽器增加。

方法

JioSaavn 運用全方位的分析和強大的工具組合 (例如 Perfetto、dumpsys 等),分析這個問題並成功達成永續發展目標。團隊透過兩項原則來克服這個難題:平行作業和延遲。

在 Google 的分析的協助下,團隊決定了工作的優先順序:

  • 使用 systrace 和 Perfetto 研究應用程式流程、分析問題點,驗證應用程式的啟動時間改善情形。
  • 延遲初始化:找出在首頁顯示之前,可能會延遲初始化的片段/執行個體/類別初始化 -
    • 廣告
    • 音樂服務 (前景服務) 和播放器資源 (例如 ExoPlayer、快取播放器佇列等)
    • 啟動時最小化的播放器片段。
  • 隨選初始化:需要程式庫時以及程式庫的初始化時間 (例如 Facebook lib)。
  • viewStubs:檢視加載作業和資源載入過長。該團隊使用 viewStubs 簡化版面配置,並將圖片轉換為 WebP。
  • 工作站執行緒:部分不需要 UI 執行緒的工作已移至 b/g 執行緒,釋出 UI 執行緒。
  • 分割快取資料 - 讀取及剖析檔案中的大量快取資料需要耗費大量時間。團隊劃分為重要資料 (顯示首頁時必須顯示) 和非關鍵資料。
  • 非同步 LayoutInflater:部分首頁 recyclerview 已使用 Async LayoutInflater 預先加載部分檢視畫面。

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

成果

為了維持應用程式穩定性,JioSaavn 團隊已將這些變更發布至多個版本。新創成果如下:

  • 在所有裝置上,應用程式啟動時間縮短 30%,低中裝置的啟動時間也減少了 35% 至 40%。
  • 主畫面瀏覽者/ 每日活躍使用人數提高了 5%,導致跳出率降低。

這個最佳化練習讓整個團隊齊聚一堂。他們已完成詳盡的逐步操作說明,讓團隊熟悉相關異動,並推動著重成效的做法,朝著應用程式邁進。

「JioSaavn 的目標是提升來自印度各地區和城市的
使用者享有的聆聽體驗,並且以可負擔性的方式跨越整個頻譜。有鑑於此,我們不斷克服了當地行動連線基礎架構 想要針對使用者裝置功能提供最佳使用者體驗,是一大挑戰。多虧 Google 的開發人員關係指引,我們才能朝這個方向邁進。」

- JioSaavn 產品團隊