2017 Google IO 大會 不僅確立了 Kotlin 為安卓開發的官方語言,還有一個細節,釋出了谷歌官方 Android 應用架構庫。這新的架構庫旨在幫助開發者設計健壯、可測試的和可維護的應用程式。在Mvp之後,Google又增加Mvp+Clean的開發架構,發現元件化是APP開發的趨勢,又提供新的元件庫(Android Architecture Components)。11月5日Google宣佈kotlin支援iOS開發,昨天進一步釋出Android架構元件穩定版。
在架構元件釋出之前,google已經自己的 ViewModel 實現,通過Loader(點選檢視)和依賴注入(Dependency Injection)保證即使配置資料更改後,ViewModel 依舊不變。Goole最最近改進到了架構元件中的 ViewModel 實現,並完全將開發者從的重複工作解脫出來,以給開發者提供更多的時間用於程式碼設計、業務邏輯和測試,而不是浪費在樣板程式碼(模板)或擔心 Android 生命週期的問題上。
Android Architecture Components
主要包含:
應用程式架構指南
https://developer.android.google.cn/topic/libraries/architecture/guide.html
新增元件到專案中https://developer.android.google.cn/topic/libraries/architecture/guide.html
處理生命週期
https://developer.android.google.cn/topic/libraries/architecture/lifecycle.html
LiveData
https://developer.android.google.cn/topic/libraries/architecture/livedata.html
ViewModel
https://developer.android.google.cn/topic/libraries/architecture/viewmodel.html
Room
https://developer.android.google.cn/topic/libraries/architecture/room.html
Components 架構原則
關注支援分離
模型驅動UI,優先持久化模型
響應式程式設計
Components 介紹
Lifecycle
Android宣告週期的回撥,幫助我們將原先需要在onStart()等生命週期回撥的程式碼可以分離到Activity或者Fragment之外。每個 Android 開發者都應該面對過生命週期問題,即作業系統啟動、停止和銷燬 Activity。有了Lifecyle這個元件,開發者可通過託管將大大減少記憶體洩露和Crash的概率。
LiveData
LiveData 是一款基於觀察者模式的可感知生命週期的核心元件,他是一個資料持有類,持有資料並且這個資料可以被觀察被監聽,和其他Observer不同的是,LiveData 持有介面程式碼 Lifecycle 的引用,意味著它和Lifecycle是繫結的。可以及時作出相應更新和釋放。
ViewModel
用於實現架構中的ViewModel,同時是與Lifecycle繫結的,使用者無需擔心生命週期。ViewModel 將檢視的資料和邏輯從具有生命週期特性的實體(如 Activity 和 Fragment)中剝離開來。方便在多個Fragment之前分享資料,比如旋轉螢幕後Activity會重新create,這時候使用ViewModel可以輕鬆快取使用之前的資料,開發者無需再次請求網路呼叫資料。
Room
谷歌推出的一個在Sqlite 之上的ORM對映曾,使用註解,極大簡化資料庫的操作,更重要的是對內建遷移的支援。而且 Room 可以和 LiveData 整合在一起,提供可觀察資料庫並能及時響應生命週期的物件。Room 集簡潔、強大和可靠性為一身,在管理本地儲存上表現卓越,Google強烈推薦開發者嘗試。
合理化建議
我們藉助Goole元件開發的同時,也可以藉助其他三方庫來輔助我們開發出更好的應用, 開發者技術前線建議:
LiveData在某些情況下可使用RxJava2代替。
Lifecyle等生命週期管理我們可以藉助RxLifeCyle。
資料層官方推薦使用Room或者Realm,等其他ORM皆可。
網路請求庫推薦使用
Retrofit+Okhttp
多層之間解耦合,推薦使用服務發現(Service Locator) 或者依賴注入(DI),推薦
Dagger2
。Modle和View繫結我們可以使用DataBinding進行快速實現
在使用元件架構時候,推薦使用MvpClean,切記不要Mvp,Mvp,Mvp!
Google samples
https://github.com/googlesamples/android-architecture-components
本文章由Tamic原創,在掘金髮布。