很高興見到你!git
上週我在 各大技術社區 發表了一篇 《Jetpack MVVM 精講》,原覺得在 知識網紅 唱衰安卓 的 2019 會無人問津,沒想到文章一經發布,從 國內知名公司 的架構師、技術經理,到 世界級公司 的 Android 開發 都在看。😉github
而且從讀者的反饋來看,近期大部分安卓開發 已跳出溫馨圈,開始嘗試認識和應用 Jetpack MVVM 到實際的項目開發中。安全
只惋惜,關於 Jetpack MVVM,網上可能是 東拼西湊、人云亦云、通篇貼代碼 的文章,這不只不能 提供完整的視角 來幫助讀者 首先明確背景情況,更是給還沒入門 Jetpack 的讀者 徒添困擾、起到 勸退 的做用。架構
好消息是,這一期,咱們帶着 精心打磨的 Jetpack MVVM 最佳實踐案例 來了!佈局
是 愛不釋手 的 交互設計! | 是 連貫 的 用戶體驗 | 惟一可信源 的 統一分發 |
---|---|---|
本人擁有 3 年的 移動端架構 踐行和設計經驗,領導團隊重構的 中大型項目 多達十數個,對 Jetpack MVVM 架構在 確立規範化、標準化 開發模式 以 減小不可預期的錯誤 所做的努力,有着深刻的理解。post
在這個案例中,我將爲你展現,Jetpack MVVM 是如何 蘊繁於簡 地 將本來十分容易出錯、一出錯就會耽擱半天時間的開發工做,經過 寥寥的幾行代碼 垂手可得地完成。😉ui
👆👆👆 劃重點架構設計
在這個項目中,設計
咱們爲 橫、豎屏 的狀況 分別安排了兩套 大相徑庭的佈局,而且在 生命週期、重建機制、狀態管理、DataBinding、ViewModel、LiveData 、Navigation 等知識點的幫助下,經過寥寥幾行代碼,輕鬆作到 在橫豎屏兩種佈局間 無縫地切換,而且不產生任何 預期外的錯誤。code
·
咱們在多個 Fragment 頁面 分別安排了 播放狀態 指示器(包括 播放暫停按鈕狀態、播放列表當前索引指示 等),並向你展現了 如何 以及爲什麼 經過 LiveData 配合 做爲惟一可信源 的 ViewModel 或單例,來實現 全應用範圍內 可追溯事件 的統一分發。
·
咱們在 Fragment 和 Activity 之間分別安排了 跨頁面通訊,從而向你展現 如何基於 迪米特原則(也稱 最少知道原則)、經過 UnPeekLiveData 和 應用級 SharedViewModel 來實現 生命週期安全的、事件源可追溯的 頁面通訊(事件回調)。
·
咱們在
ui.page
、data.repository
、bridge.request
等目錄下,分別安排了 視圖控制器、ViewModel 、DataRepository 等 內容,從而向你展現,單向依賴 的架構設計,是如何經過分層的 數據請求和響應,來 規避 內存泄漏 等問題。
·
本項目的代碼一概採用 通過 ISO 認證的 標準化工業級語言 Java 來編寫。而且,在上述目錄 所包含的 類中,咱們大都 提供了豐富的註釋,來幫助你理解 骨架代碼 爲什麼要如此設計、如此設計可以 在軟件工程的背景下 避免哪些不可預期的錯誤。
除了 在 蘊繁於簡 的代碼中 掌握 MVVM 最佳實踐,你還能夠 從這個開源項目中 得到的內容 包括:
詳見 GitHub 倉庫 Jetpack-MVVM-Best-Practice