我們於 2019 年 6 月,在小專欄開設了《重學安卓》付費專欄,
迄今爲止,我們共連接了 1111 名優秀開發者,並且期間不斷有小夥伴告訴我,受專欄內容的影響和啓發,他們也開啓了寫作之路,
這裏面就包括 專注 ROM 開發多年、現就職於快手的 Flywith24,也包括 Bezier 等對寫作技能精益求精的明日之星。
以 “深度思考” 爲立足之本
在過去兩年裏,我們以 “架構組件” 爲話題,不遺餘力地在每篇文章中貫徹落實 基於 “第一性原理” 和 “實事求是” 精神的深度思考方式,
在 “深度思考” 的幫助下,以及基於對大量樣本的追蹤和反思,我們獨樹一幟地從軟件工程的視角出發抓住本質,並開源了一系列高頻使用的倉庫,
包括 騰訊音樂、BMW、TCL 等知名廠商的軟件,都在使用我們正在維護的《UnPeek-LiveData》等倉庫。
不小心當了回 “萬惡之源”
不知何時起,你是否經常在 培訓機構軟文 或網文中看到 “一致性” 等令人迷惑的說辭?
這些術語在 Android 領域是從未有過,網上關於 “一致性問題” 等說辭,它們都有一個共同的來源,
事實上,這些術語都是本人經由長期的深度思考、實踐和交流後,爲現象本質匹配的高度概括,《重學安卓》與之相對應的每一篇文章都 提供了 背景緣由、職責邊界 等完整的解析過程,
但十分令人遺憾的是,本是從 “實事求是” 出發概括的術語,卻頻繁被人拿去 “點綴文章” 和 “掛羊頭賣狗肉”,這些無厘頭的濫用行爲,無形中扭曲和破壞了術語 “實事求是” 的形象,
所以過去兩年裏,我們積極地舉報 “培訓機構的洗稿軟文”,以及在相關文章的評論區補充參考文獻來源,
非常感謝小夥伴們的主動反饋。
本質概括一覽
基於深度思考,我們確立下來並廣泛傳播的 “本質概括” 包括但不限於:
Jetpack 架構組件本質:
Lifecycle 的本質是解決 “生命週期管理” 的一致性問題
LiveData 的本質是解決 “跨域消息同步” 的一致性問題
ViewModel 的本質是解決 “狀態保存恢復” 的一致性問題
DataBinding 的本質是解決 “視圖實例的 null 安全” 的一致性問題
Navigation 的本質是解決 “路由初始參數恢復” 的一致性問題
…
若要說它們有什麼共性的話,就是透過各種方式 實現樣板邏輯的 “內聚”,從而達到規避一致性問題的目的。
文章來源
·
《就算不用 Jetpack Navigation,也請務必領略的聲明式編程之美》
聲明式 UI 本質:
聲明式 UI 的本質是函數式編程,
函數式編程的基石是純函數,
純函數的特性是 只有一個入口、只有一個出口,且無副作用,
聲明式 UI 正是通過對視圖實例的屏蔽,來規避 “視圖實例的 null 安全” 的一致性問題,
也即聲明式 UI 可用於替代 DataBinding 等框架,
如果公司項目執意使用 Java,爲了規避 null 安全問題,務必使用 DataBinding 等框架,
如果允許使用 kotlin,那麼當下 kotlin + ViewBinding 的組合是更優解。
文章來源
架構模式本質:
MVP 的本質是基於 “依賴倒置原則” 實現組件的可替換,適合非頁面開發場景的編寫(具體可參見我開源的 Linkage-RecyclerView 中萬用的適配器),
MVVM 的本質是基於 “數據綁定” 來解決視圖實例 null 安全一致性問題,也即它是專用於頁面開發的模式,
當我們剔除了 DataBinding 框架而使用 Compose 或 kotlin + ViewBinding 等方式來規避一致性問題,雖然效果是等同的,但已不能稱作是 MVVM。
文章來源
LiveData 的那些事:
LiveData 的設計存在缺陷。
一方面它提供了面向 “事件” 的設計,
這使得我們萌生了通過 “決策權收緊” 的結構(也即所謂 “唯一可信源”)來確保 “消息分發可靠一致” 的目的成爲可能,
另一方面它權當自己是 “狀態”,而僅提供粘性的設計,
正是這種令人迷惑的設計,導致了所謂 “數據倒灌” 現象的發生。
要想弄清楚 “唯一可信源” 和 “數據倒灌”,得先正確理解和區分 “狀態” 和 “事件”。
文章來源
開源項目一覽
包括 騰訊音樂、字節跳動直播 在內的諸多廠商或團隊,參考過或正在使用我們開源和維護的《腳手架》等項目,
解決 LiveData 數據倒灌問題的 UnPeek-LiveData
解決 Navigation 轉場卡頓的 Smooth-Navigation
我和 Flywith24 合作開發維護的 Jetpack MVVM - Java to Kotlin 示例
https://github.com/Jetpack-Missionary/Jetpack-From-Java-To-Kotlin
作爲依賴倒置原則 MVP 的 Linkage-RecyclerView
對未來的展望
《重學安卓》發展至今,已從單純的寫作專欄,演化爲高手雲集的社羣,這裏平均每兩週一位小夥伴告知自己入職字節跳動,也有來自 HencoderPlus 的小夥伴不斷加入,
關於寫作,《重學安卓》一直保持初心,只寫揭露本質的 “深度思考” 文章,授人以魚且授人以漁。
比起無原則的盲目擴充,我們選擇慎重選題和長期修訂打磨,確保能恰到好處地覆蓋到 關於某領域的 來龍去脈、各式場景、最新動態,
並且考慮到部分讀者有截圖收藏的需要,我們逐步爲專欄文章增設 “語錄卡片”,方便已訂閱的讀者保存到手機、隨時查看、以及通過二維碼直達原文重溫。
最後,感謝小夥伴們一直以來的關心和支持!