是 可貴一見 的 Jetpack MVVM 最佳實踐!

前言

很高興見到你!git

上週我在 各大技術社區 發表了一篇 《Jetpack MVVM 精講》,原覺得在 知識網紅 唱衰安卓 的 2019 會無人問津,沒想到文章一經發布,從 國內知名公司 的架構師、技術經理,到 世界級公司 的 Android 開發 都在看。😉github

而且從讀者的反饋來看,近期大部分安卓開發 已跳出溫馨圈,開始嘗試認識和應用 Jetpack MVVM 到實際的項目開發中。安全

只惋惜,關於 Jetpack MVVM,網上可能是 東拼西湊、人云亦云、通篇貼代碼 的文章,這不只不能 提供完整的視角 來幫助讀者 首先明確背景情況,更是給還沒入門 Jetpack 的讀者 徒添困擾、起到 勸退 的做用。架構

好消息是,這一期,咱們帶着 精心打磨的 Jetpack MVVM 最佳實踐案例 來了!佈局

是 愛不釋手 的 交互設計! 是 連貫 的 用戶體驗 惟一可信源 的 統一分發

橫豎屏佈局 的 無縫切換

項目簡介

本人擁有 3 年的 移動端架構 踐行和設計經驗,領導團隊重構的 中大型項目 多達十數個,對 Jetpack MVVM 架構在 確立規範化、標準化 開發模式 以 減小不可預期的錯誤 所做的努力,有着深刻的理解。post

在這個案例中,我將爲你展現,Jetpack MVVM 是如何 蘊繁於簡 地 將本來十分容易出錯、一出錯就會耽擱半天時間的開發工做,經過 寥寥的幾行代碼 垂手可得地完成。😉ui

👆👆👆 劃重點架構設計

在這個項目中,設計

咱們爲 橫、豎屏 的狀況 分別安排了兩套 大相徑庭的佈局,而且在 生命週期重建機制狀態管理DataBindingViewModelLiveDataNavigation 等知識點的幫助下,經過寥寥幾行代碼,輕鬆作到 在橫豎屏兩種佈局間 無縫地切換,而且不產生任何 預期外的錯誤code

·

咱們在多個 Fragment 頁面 分別安排了 播放狀態 指示器(包括 播放暫停按鈕狀態、播放列表當前索引指示 等),並向你展現了 如何 以及爲什麼 經過 LiveData 配合 做爲惟一可信源 的 ViewModel 或單例,來實現 全應用範圍內 可追溯事件 的統一分發

·

咱們在 Fragment 和 Activity 之間分別安排了 跨頁面通訊,從而向你展現 如何基於 迪米特原則(也稱 最少知道原則)、經過 UnPeekLiveData 和 應用級 SharedViewModel 來實現 生命週期安全的、事件源可追溯的 頁面通訊(事件回調)。

·

咱們在 ui.pagedata.repositorybridge.request 等目錄下,分別安排了 視圖控制器、ViewModel 、DataRepository 等 內容,從而向你展現,單向依賴 的架構設計,是如何經過分層的 數據請求和響應,來 規避 內存泄漏 等問題。

·

本項目的代碼一概採用 通過 ISO 認證的 標準化工業級語言 Java 來編寫。而且,在上述目錄 所包含的 類中,咱們大都 提供了豐富的註釋,來幫助你理解 骨架代碼 爲什麼要如此設計、如此設計可以 在軟件工程的背景下 避免哪些不可預期的錯誤。

除了 在 蘊繁於簡 的代碼中 掌握 MVVM 最佳實踐,你還能夠 從這個開源項目中 得到的內容 包括:

  1. 整潔的代碼風格 和 標準的資源命名規範。
  2. 對 視圖控制器 知識點的 深刻理解 和 正確使用。
  3. AndroidX 和 Material Design 2 的全面使用。
  4. ConstraintLayout 約束佈局的最佳實踐。
  5. 優秀的 用戶體驗 和 交互設計
  6. 毫不使用 Dagger,毫不使用奇技淫巧、編寫艱深晦澀的代碼。
  7. One More Thing:

The One More Thing is:

詳見 GitHub 倉庫 Jetpack-MVVM-Best-Practice

相關文章
相關標籤/搜索