Google更新Android原生UI工具包,發布Jetpack Compose 1.6版,這個版本的更新重點在於改進效能表現,頁面滾動和應用程式啟動都有感加速。Compose編譯器也添加新功能,使編譯更加穩定快速,Google還調整預設字體內邊距設定,使文字布局設計更容易符合規範。

Jetpack Compose 1.6的效能獲得全面提升,依據官方的基準測試,頁面滾動效能增加20%。而啟動時間縮短了約12%,大多數應用程式只需要將Jetpack Compose更新到最新版本,就能有效能提升的好處。官方解釋,滾動效能與啟動時間的提升,來自於Jetpack Compose對記憶體分配和延遲初始化的改進。而這些改進帶來的好處,遍及Compose所有API,尤其是文字、可點擊元素、延遲載入列表和繪圖API等。

Compose編譯器添加了一個新的編譯器選項,能夠使應用程式設定檔更穩定。該選項可讓開發者將任意類別,包括自有模組、外部函式庫以及標準函式庫標記為穩定。當類別被標記為穩定,Compose框架可掌握穩定的類別和資料結構,因此也就能做出更多最佳化假設,更有效率地判斷需要重組(Recomposition)的時機。這提供開發者一種在不犧牲靈活性和可擴展性的前提下,提升應用程式效能的方法。

Google也改進Compose編譯器擴充套件產生程式碼生成的過程,由於Compose編譯器會追蹤Compose狀態物件,以判斷在數值發生變化時,哪些可組合項目需要被重組。實際上,許多狀態值僅會被讀取一次,甚至部分狀態值從未被讀取,但仍然被頻繁變更。而用來保存可組合項目狀態的是remember函式,能夠避免不必要的重新渲染,而Google對Compose編譯器的更新,預設啟用內在記憶(Intrinsic Remember)模式,則可進一步強化remember函式的能力。

此外,Google想讓開發者不需要深入研究Compose內部結構,用更直覺地方式編寫程式碼,以此增進開發者的生產力,因此最佳化程式碼的工作也就需由Compose承擔。這個新版本的Compose增加強跳過模式(Strong Skipping Mode),進一步最佳化重組的過程,該模式放寬了有關可以跳過重組規則,使特定更改不再觸發重組,相關的UI元件也就不會在非必要的狀態下重新渲染,使其更符合開發者的預期。目前強跳過模式仍在實驗性階段,官方計畫在Jetpack Compose 1.7版本預設啟動。

這次更新也更改預設字體內留有額外邊距的設定,includeFontPadding屬性現在預設關閉,官方解釋,includeFontPadding是一個老舊屬性,會在文字的第一行頂部和最後一行底部,額外添加內邊距。而預設關閉該屬性之後,文字布局將會更容易符合設計規範。

Compose Foundation函式庫還新增支援平臺級拖放操作支援,允許多視窗模式下,應用程式之間相互拖放內容。

熱門新聞

Advertisement