天天看點

移動端性能優化系列—啟動速度

本文出自于“ 「2021 友盟+ 移動應用性能挑戰賽」 ” 中的參賽作品,作者:梓明;該文章表述了作者如何借助 友盟+ U-APM 

工具解決了啟動問題。

移動端性能對使用者體驗、留存有着至關重要的影響,作為開發者是不是被這樣吐槽過,“這個 APP 怎麼這麼大?”、“怎麼一直在 APP 封面圖轉悠,點不進去”、“進入詳情效果有些卡”、“用 4G 使用你們的 APP,我的流量有點不夠啊”等等,這些問題都直覺反映出,一個體驗良好的應用,隻有功能健全還不夠,以下是我在性能優化上總結的幾點:

  • 啟動速度優化
  • 流暢度優化
  • 資源優化
  • 記憶體優化
  • APK體積優化

今天先聊聊,啟動速度的那些事

應用啟動流程

冷啟動

從點選應用圖示到UI界面完全顯示且使用者可操作的全部過程。

特點:耗時最多,衡量标準

啟動流程:Click Event -> IPC -> Process.start -> ActivityThread -> bindApplication -> LifeCycle -> ViewRootImpl

熱啟動

因為會從已有的應用程序啟動,是以不會再建立和初始化Application,隻會重新建立并初始化Activity。

特點:耗時較少

啟動流程:LifeCycle -> ViewRootImpl

是以判斷應用啟動速度的的标準是冷啟動的速度,即殺掉應用後重新啟動的速度,此項主要是和你的競品對比。

不應在 Application 以及 Activity 的生命周期回調中做任何費時操作,具體名額大概是你在 onCreate,onResume,onStart 等回調中所花費的總時間最好不要超過 400ms,否則使用者在桌面點選你的應用圖示後,将感覺到明顯的卡頓。

冷啟動分析及優化方向

冷啟動涉及的相關任務

冷啟動之前

首先,會啟動 App

然後,加載空白 Window

最後,建立程序

需要注意的是,這些都是系統的行為,一般情況下我們是無法直接幹預的。

随後任務

首先,建立 Application

啟動主線程

建立 MainActivity

加載布局

布置螢幕

首幀繪制

通常到了界面首幀繪制完成後,我們就可以認為啟動已經結束了。

下面是

官方文檔

中的啟動過程流程圖,顯示系統程序和應用程序之間如何交接工作。實際上對啟動流程的簡要概括。 

移動端性能優化系列—啟動速度

優化方向

我們的優化方向就是 Application 和 Activity 的生命周期這個階段,啟動中的系統任務我們無法幹預,能幹預的就是在建立應用和建立 Activity 的過程中可能會出現的性能問題。這一過程具體就是:

Application 的 attachBaseContext

Application 的 onCreate

activity 的 onCreate

activity 的 onStart

activity 的 onResume

activity 的 onResume 方法完成後才開始首幀的繪制。是以這些方法中的耗時操作我們是要極力避免的。 并且,通常情況下,一個應用的首頁的資料是需要進行網絡請求的,那麼使用者啟動應用是希望快速進入首頁以及看到首頁資料,這也是我們計算啟動結束時間的一個依據。

U-APM 在啟動優化上的應用

以前使用友盟統計來分析 App 日活、埋點等資料,發現友盟推出的 U-APM ,趕緊來嘗嘗鮮。

U-APM 是友盟+推出的 App 穩定性監控、性能監控和雲真機測試平台。通過輕量級的內建接入即可擁有實時、可靠、全面的應用崩潰、ANR、自定義異常等捕獲能力,及卡頓、啟動分析等性能能力,支援多場景、多通道智能告警監控,幫助開發者高效還原異常、卡頓使用者的通路路徑和業務現場,縮短故障排查時間。就啟動分析這項能力來看看,U-APM 都做了什麼。

U-APM 支援啟動趨勢分析、慢啟動分析、啟動崩潰分析。

啟動趨勢分析

啟動趨勢較為直覺的展示應用啟動耗時的平均值、分位值、區間分布等資料,以及啟動階段的性能分解資料,也能分析出,多版本疊代後,啟動時間的分布狀況。

移動端性能優化系列—啟動速度
移動端性能優化系列—啟動速度
移動端性能優化系列—啟動速度

慢啟動分析

慢啟動分析,有助于開發者追根溯源,該功能展示慢啟動情況的占比以及慢啟動裝置清單,您可以在啟動設定中自定義慢啟動的劃分,預設首次啟動/冷啟動超過3秒為慢啟動,熱啟動超過1秒為慢啟動。

冷啟動階段的慢啟動分析,直覺表現出慢啟動比例以及慢啟動平均耗時。

移動端性能優化系列—啟動速度

慢啟動分布,直覺表現出,慢啟動分布的裝置、系統、營運商、版本、管道、地域。

移動端性能優化系列—啟動速度

啟動崩潰分析

歸納啟動階段中出現的崩潰資訊,支援劃分首次啟動、冷啟動、熱啟動狀态下的崩潰,預設啟動耗時上限為8秒,超出時間的崩潰不被劃分至啟動崩潰。

移動端性能優化系列—啟動速度
移動端性能優化系列—啟動速度

這對減少應用啟動時間,提供了巨大幫助,官方已提供

Demo

總結

移動端性能優化環環相扣,啟動時間優化也是較為重要的一個環節,U-APM 的出現,無疑是開發者的福利,幫助開發者及早發現問題,解決問題,至于 U-APM 其他功能,可以登入 

官方網站 

去體驗。