啟動延遲時間是保留每日活躍使用人數的重要指標,可確保從最初互動開始就有順暢的使用者體驗。在 RAM 較低的環境中更是如此,因為系統可能需要考慮效能的取捨。不過,在開始改善應用程式啟動之前,請務必瞭解啟動本身的基礎方面。
最佳做法
傳送基準設定檔
透過避免包含程式碼路徑的解釋和及時 (JIT) 編譯步驟,基準設定檔從首次啟動後,將程式碼執行速度提高了約 30%。藉由在應用程式中傳送基準設定檔,Android 執行階段 (ART) 會透過預先 (AOT) 編譯,在每位新的使用者加入和每次應用程式更新時實現效能提升。
避免立即初始化
避免在應用程式啟動序列中,執行不必要的立即工作。應用程式啟動程序時最常見的情況是透過啟動應用程式來啟動程序。不過,WorkManager、JobScheduler、BroadcastReceiver、繫結服務和 AndroidX 啟動程式庫也可以在背景啟動應用程式程序。請盡可能避免在 Application
類別中立即初始化任何不必要的項目。許多程式庫提供隨選初始化功能,因此只有在必要時才會叫用程式庫。
將工作從 UI 執行緒移至背景執行緒
如果工作花費時間較長並封鎖主執行緒,請將工作移至背景執行緒,或使用 WorkManager 確保效率。識別佔用大量時間或耗用時間超過預期的作業。最佳化這些工作有助於大幅改善啟動延遲。
分析並修正嚴重的磁碟讀取爭用情況
StrictMode 是一款開發人員工具,可協助偵測在應用程式主執行緒中使用意外磁碟或網路存取權的情況,在主執行緒中接收 UI 作業並播放動畫。一旦工具檢測到可能的改善領域,您就可以自動終止應用程式,或記錄違規事件以供日後進一步檢查。
避免同步處理序間通訊 (IPC)
一般而言,應用程式的執行長時間停止是繫結器呼叫所致,這是 Android 的處處理序間通訊 (IPC) 機制。在新版的 Android 中,這是 UI 執行緒停止執行最常見的原因之一。一般而言,解決方法是避免呼叫會做出繫結器呼叫的函式;如果無法避免,建議您快取此值,或將工作移至背景執行緒。詳情請參閱執行緒排程延遲一文。