Google App Architecture
架構原則
分離關注點
要遵循的最重要的原則是 分離關注點 。一種常見的錯誤是在一個 Activity
或 Fragment
中編寫所有程式碼。這些基於介面的類應僅包含處理介面和作業系統互動的邏輯。應儘可能使這些類保持精簡,這樣可以避免許多與生命週期相關的問題。
通過模型驅動介面
另一個重要原則是您應該 通過模型驅動介面 ,最好是永續性模型。模型是負責處理應用資料的元件。它們獨立於應用中的 View
物件和應用元件,因此不受應用的生命週期以及相關關注點的影響。
永續性是理想之選,原因如下:
-
如果 Android 作業系統銷燬應用以釋放資源,使用者不會丟失資料。
-
當網路連線不穩定或不可用時,應用會繼續工作。
應用所基於的模型類應明確定義資料管理職責,這樣將使應用更可測試且更一致。

image
LiveData
LiveData是一種可觀察的資料儲存器。應用中的其他元件可以使用此儲存器來監控物件的更改,而無需在它們之間建立明確且嚴格的依賴路徑。LiveData 元件還遵循應用元件(如 Activity、Fragment 和 Service)的生命週期狀態,幷包括清理邏輯以防止物件洩漏和過多的記憶體消耗。
關於網路狀態等的官方優化演示
android-architecture-components
ViewModel
ViewModel 會將資料獲取過程委派給一個新的模組,即儲存區。
儲存區模組會處理資料操作。它們會提供一個乾淨的 API,以便應用的其餘部分可以輕鬆檢索該資料。資料更新時,它們知道從何處獲取資料以及進行哪些 API 呼叫。您可以將儲存區視為不同資料來源(如永續性模型、網路服務和快取)之間的媒介。
Room 是一個物件對映庫,可利用最少的樣板程式碼實現本地資料永續性。在編譯時,它會根據資料架構驗證每個查詢,這樣損壞的 SQL 查詢會導致編譯時錯誤而不是執行時失敗。Room 可以抽象化處理原始 SQL 表格和查詢的一些底層實現細節。它還允許您觀察對資料庫資料(包括集合和連線查詢)的更改,並使用 LiveData 物件公開這類更改。它甚至明確定義瞭解決一些常見執行緒問題(如訪問主執行緒上的儲存空間)的執行約束。
優秀參考
Lifecycle+ViewModel+LiveData+Mvp+Dagger2完美搭建