Jetpack Compose 拆箱即用,效能優異。請按照最佳做法設定應用程式,避免常見的錯誤,並盡可能提升 Compose 應用程式的效能。
Jetpack Compose 評估基準
為驗證 Jetpack Compose 相對 Views 的效能,我們使用「英雄」基準測試,也就是著重於重要實際使用者歷程的基準測試,例如冷啟動應用程式,或捲動含有圖片的清單或格線。我們使用開放原始碼的 Pokedex 應用程式進行這些基準測試,比較其「Views」和「Compose」實作項目。
這些基準顯示,Compose 1.9 以上版本在捲動時的卡頓效能與 Views 相同。
如要查看其他指標並瞭解我們的評估方法,請參閱英雄基準。
核心概念
以下是 Compose 中與效能相關的一些重要概念:
- 階段:瞭解組合、版面配置和繪製階段,對於最佳化 Compose 更新 UI 的方式至關重要。
- 基準設定檔:這些設定檔會預先編譯重要程式碼,加快應用程式啟動速度,並提升互動流暢度。
- 穩定性:提升應用程式穩定性,更有效率地略過不必要的重組作業,進而提升效能。
正確設定應用程式
如果應用程式效能不佳,可能表示設定有問題。第一步是查看下列設定選項:
- 在版本模式中建構並使用 R8:嘗試在版本模式中執行應用程式。偵錯模式有助於找出許多問題,但需要投入效能,而且會難以找出其他問題。您也應該使用 R8 編譯器啟用最佳化和縮減功能,確保發布子版本建構作業的效能和效率。
- 使用基準設定檔:基準設定檔會預先編譯關鍵使用者歷程的程式碼,藉此提升效能。Compose 包含預設設定檔,但最好也建立應用程式專用設定檔。如要進一步瞭解基準設定檔,請參閱一般 Android 效能說明文件
工具
熟悉可用的工具套件,有助於評估及分析 Compose 應用程式的效能。
最佳做法
使用 Compose 開發應用程式時,請採用下列最佳做法:
- 避免昂貴的計算作業:使用
remember快取昂貴計算作業的結果。 - 協助延遲版面配置:使用
key參數為延遲版面配置提供穩定鍵,盡量減少不必要的重組。 - 避免不必要的重組:快速變更狀態時,請使用
derivedStateOf限制重組。 - 延遲讀取狀態:將狀態讀取作業包裝在 lambda 函式中,盡可能延遲讀取狀態。
- 使用 lambda 修飾符變更狀態:針對頻繁變更的狀態變數,使用以 lambda 為基礎的修飾符,例如
Modifier.offset { ... }。 - 避免反向寫入:請勿寫入可組合項中已讀取的狀態。
詳情請參閱最佳做法指南。
觀看次數
如果您使用檢視區塊而非 Compose,請參閱專屬的「提升版面配置效能」指南。
其他資源
- 應用程式效能指南:瞭解改善 Android 效能的最佳做法、程式庫和工具。
- 檢查效能: 檢查應用程式效能。
- 基準測試: 為應用程式效能進行基準測試。
- 應用程式啟動: 最佳化應用程式啟動程序。
- 基準設定檔:瞭解基準設定檔。