Jetpack Compose学习笔记
在前不久的 Android Dev Summit '19 上,Jetpack Compose 終于發布了一個可直接獲得的預覽版。現在的版本還是 0.1.0-dev02,處于非常早期的版本,官方也再三強調非常有可能產生變化且無法用于生產環境。不過我認為這是簡單了解一下 Compose 的好時機。有備而無患。
首先來了解一下現在嘗試 Compose 所需要的環境:
為什么需要 Compose
Android 已經十年,設備的變化非常大,也涌現出很多心的開發技術和思想,但用來開發 UI 的工具卻還依舊停留在十年前。不少控件已經過時而且背負了太多歷史包袱,重新開始或許是更好的選擇。
開發 UI 需要編寫 XML 布局,通過代碼加載,可能還需要通過 XML 來定義 style,為了編寫一個界面要做的工作太多了。而且考慮到 Activity 和 Fragment,需要顧及的就更多了。如果要自定義一個 View,要做什么工作?我想“自定義 View”這幾個字,都能嚇退一批人吧。
并且大量 UI 工具與系統的版本綁定,新功能新修復無法及時讓開發者和用戶受益。Material design?Who cares?那是 5.0 以上才大部分支持的東西,更別提 shape theming 了。
原先的控件使用了一些只有官方能使用的黑魔法,也就是 hidden API。Compose 將完全在公開的 API 上進行構建,官方使用的廣大的普通開發者也能夠使用。
插點私貨。我偶爾會看著隔壁 Flutter 流下羨慕的淚水。它提供了大量官方的控件,應對各種場景,而且在各種系統版本上提供統一的行為。而我卻需要滿世界找非官方的實現,一個個查看是否滿足我的需求,是否還在維護,是否需要自己魔改。當然,我無比感恩這些開發者的貢獻,但我覺得我們應該被 Android 官方善待。
然后是 data flow。對于 UI 編程來說,分發事件和接收狀態是與開發者關聯最密切的事情。而現有的 android.widget 在這兩個方面都做得不夠好:狀態的管理比較混亂;事件在分發時就已經改變了控件的狀態;listener 可以跟 Kotlin 結合更緊密提供更合適的做法。
聲明式 UI 編程
聲明式編程通常是相對于命令式編程(imperative programming)來說的,不關注編程中具體的過程,而是以最后的結果為重點。在 UI 這一特定的領域來說,聲明式編程則意味著:當狀態發生變化時,聲明式框架會自動更新視圖。
聲明式的 UI 框架會關注:
也就是說,它只關心當前的數據(狀態)會渲染出什么樣的外觀,而不把數據當成一個擁有上下文的狀態流來看待。
總結
再次強調,Compose 處于很早期的階段,API 也好,具體的底層實現也好,都很可能會發生變化。官方的示例 JetNews 也存在一定的性能問題。
所以我覺得普通開發者還不需要去了解具體使用的細節。但還是有幾個建議:
- 如果還沒學習 Kotlin,快學吧。
- 然后考慮學習一下 Kotlin coroutine。
- 學習已經比較成熟的聲明式 UI 框架,比如 React 和 Flutter。考慮了解一下它們的應用和原理,比如狀態管理的最佳實踐和 virtual DOM 等。這樣可以快速掌握同類型的 UI 框架。
鏈接:https://pan.baidu.com/s/1_4PIUb-Yl68aTW9Bw95iJA
提取碼:tnav
?
總結
以上是生活随笔為你收集整理的Jetpack Compose学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炖鲢鱼的家常做法?
- 下一篇: 自己想开花店去哪里学 有很多方法文章里分