2017 Google IO 大會 不只確立了 Kotlin 爲安卓開發的官方語言,還有一個細節,發佈了谷歌官方 Android 應用架構庫。這新的架構庫旨在幫助開發者設計健壯、可測試的和可維護的應用程序。在Mvp以後,Google又增長Mvp+Clean的開發架構,發現組件化是APP開發的趨勢,又提供新的組件庫(Android Architecture Components)。11月5日Google宣佈kotlin支持iOS開發,昨天進一步發佈Android架構組件穩定版。html
在架構組件發佈以前,google已經本身的 ViewModel 實現,經過Loader(點擊查看)和依賴注入(Dependency Injection)保證即便配置數據更改後,ViewModel 依舊不變。Goole最最近改進到了架構組件中的 ViewModel 實現,並徹底將開發者從的重複工做解脫出來,以給開發者提供更多的時間用於代碼設計、業務邏輯和測試,而不是浪費在樣板代碼(模板)或擔憂 Android 生命週期的問題上。android
應用程序架構指南git
https://developer.android.google.cn/topic/libraries/architecture/guide.htmlgithub
添加組件到項目中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架構
ViewModelide
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原創,在掘金髮布。