正文
今天我們來一起來了解下Android MVVM設(shè)計模式
關(guān)鍵字:MVVM壳繁、Jetpack坟募、DataBinding、ViewModel番川、LiveData到涂、Kotlin
我之前開發(fā)的時候,覺得不按框架而按自己的想法去寫是可以的颁督,但是自己開發(fā)了幾次之后就發(fā)現(xiàn)維護(hù)起來特別地困難践啄,現(xiàn)在我的想法改變了,我覺得是時候?qū)W學(xué)使用框架開發(fā)沉御,所以我寫關(guān)于Android MVVM的一系列文章屿讽,我也是剛開始學(xué)(MVVM都出來好幾年了,甚是尷尬吠裆,趕緊學(xué)起來吧)
我們先從幾個概念出發(fā)
MVVM
一種設(shè)計框架伐谈,分為View、ViewModel硫痰、Model三層
View層:包括Activity衩婚、Fragment,主要負(fù)責(zé)UI控件的更新顯示效斑,不涉及任何的業(yè)務(wù)邏輯
ViewModel:這一層和View層是相反的非春,它只負(fù)責(zé)業(yè)務(wù)邏輯,不能做UI方面的工作
Model:主要是數(shù)據(jù)的獲取和整合,可以從本地數(shù)據(jù)庫獲取數(shù)據(jù)奇昙,也可以從后臺服務(wù)器獲取护侮,提供一個數(shù)據(jù)倉庫整合數(shù)據(jù)
這三層只是上層擁有下層的引用,反過來不能储耐,比如View層可以擁有ViewModel層的引用羊初,但是ViewModel不能擁有View層的引用,而且不能跨層引用什湘,也就是說View層不用直接擁有Model層的引用长赞,必須要通過ViewModel引用Model層才能實現(xiàn)相關(guān)的功能
那么,我們明白了MVVM的思想了該怎么設(shè)計呢闽撤,代碼應(yīng)該怎么寫呢得哆,這個不要慌,我們慢慢學(xué)(我也是剛學(xué)哟旗,正在摸索中)贩据,先往下看
Jetpack
先上一張官網(wǎng)的圖
官網(wǎng)描述地很清楚,但是我們還是不知道從何開始闸餐,不急饱亮,我們再來了解幾個有趣牛逼的東西
DataBinding
這個東西就牛逼了,而且Jetpack2.0也集成了DataBinding
DataBinding:早在2015年的IO大會就已經(jīng)介紹了(太尷尬了舍沙,出來這么久了我都還沒用過)近上,它可以幫助我們實現(xiàn)MVVM,它可以將數(shù)據(jù)綁定在xml中场勤,既可以單向綁定戈锻,也可以雙向綁定歼跟,單向綁定好理解和媳,所謂雙向綁定就是數(shù)據(jù)變化時,UI也做相應(yīng)的變化
這個我們現(xiàn)在只要知道它可以幫助我們實現(xiàn)MVVM就可以了哈街,具體怎么用我們后面慢慢講(其實我是真的沒用過留瞳,我要用過之后才能寫,不能亂寫)
LiveData
這個也是在Jetpack里的一個架構(gòu)骚秦,我們先從字面意思上對它解讀
首先Data一看就知道它應(yīng)該和數(shù)據(jù)有關(guān)她倘,然后就是Live,有生命的意思作箍,在Android中有生命周期這一概念硬梁,那這樣下來,我們可以得到一個結(jié)論:LiveData它應(yīng)該是一個和生命周期相關(guān)的數(shù)據(jù)之類的架構(gòu)
LiveData:一種具有感知生命周期能力的可觀察數(shù)據(jù)持有類胞得,一般在ViewModel中定義
為什么要賦予它生命周期感知能力呢荧止,其實是為了有效地防止內(nèi)存泄漏
Kotlin
相信大家對這個名字不陌生了吧,現(xiàn)在很多開發(fā)都是用的Kotlin,漸漸地成為了一種趨勢了跃巡,我之前也只是知道這個語言危号,不去了解,就像當(dāng)時只用eclipse + ADT開發(fā)app而不去了解AS一樣素邪,現(xiàn)在我可能要花點時間去學(xué)習(xí)下Kotlin了外莲,不然就OUT,跟不上時代了
最后附上Google在B站上的Android開發(fā)教學(xué)視頻(之前還沒注意Google居然入駐B站兔朦,尷尬)