學(xué)習(xí)Android Jetpack? 實(shí)戰(zhàn)和教程這里全都有!

技術(shù)不止重窟,文章有料载萌,加 JiuXinDev 入群,Android 搬磚路上不孤單

前言

在之前一個(gè)月的里巡扇,我系統(tǒng)的學(xué)習(xí)了Android Jetpack組件扭仁,并輸出了即學(xué)即用Android Jetpack系列文章??:

第一篇:《即學(xué)即用Android Jetpack - Navigation》
第二篇:《即學(xué)即用Android Jetpack - Data Binding》
第三篇:《即學(xué)即用Android Jetpack - ViewModel & LiveData》
第四篇:《即學(xué)即用Android Jetpack - Room》
第五篇:《即學(xué)即用Android Jetpack - Paging》
第六篇:《即學(xué)即用Android Jetpack - WorkManger》
第七篇:《即學(xué)即用Android Jetpack - Startup》
第八篇:《即學(xué)即用Android Jetpack - Paging 3》

該系列文章的意義在于指導(dǎo)初學(xué)者從零到一搭建一個(gè)MVVM + Anroid Jetpack組件的App,最終完成一個(gè)如下的案例:

圖片 圖片
注冊(cè)登錄
選擇品牌
點(diǎn)擊喜歡
更換頭像

項(xiàng)目地址:https://github.com/mCyp/Hoo

確認(rèn)過(guò)眼神霎迫,是迷戀鞋的人~斋枢。需要且必要說(shuō)明的是,該項(xiàng)目的一部分參考自谷歌的官方示例:android-sunflower

本項(xiàng)目采用的語(yǔ)言是Kotlin知给,為什么是Kotlin顯然描姚,谷歌已經(jīng)宣布Kotlin成為開(kāi)發(fā)安卓的首選語(yǔ)言涩赢,且今后的新出的東西會(huì)優(yōu)先支持Kotlin

為什么是Android Jetpack?

1. 從零到一搭建

Android Jetpack是谷歌推出的加快Android應(yīng)用開(kāi)發(fā)的組件轩勘,而本應(yīng)用使用的一部分僅僅是左上角綠色的一部分:

Jetpack
這張圖其實(shí)有點(diǎn)舊了筒扒,因?yàn)樵诮衲晡逶路莸墓雀栝_(kāi)發(fā)者大會(huì),推出了CameraX绊寻。不過(guò)花墩,仍然可以預(yù)見(jiàn)的是,谷歌在致力于安卓生態(tài)環(huán)境的搭建澄步。

我的Demo采用MVVM的設(shè)計(jì)模式冰蘑,這一點(diǎn)可以從我的架構(gòu)圖可以看出:


系統(tǒng)架構(gòu)

示例Demo少了網(wǎng)絡(luò)請(qǐng)求的部分,不過(guò)我覺(jué)得對(duì)于指導(dǎo)整體搭建的影響不是很大村缸。

2. Android Jetpack為我們做了什么祠肥?

其實(shí)我覺(jué)得這個(gè)問(wèn)題可以簡(jiǎn)化為Android Jetpack組件的作用是什么?

  • Navigation:一個(gè)用于管理Fragment切換的工具類(lèi)梯皿,可視化仇箱、可綁定控件县恕、支持動(dòng)畫(huà)等是其優(yōu)點(diǎn)。
  • Data Binding:不用說(shuō)剂桥,都知道忠烛,加速MVVM的創(chuàng)建。
  • Lifecycle:雖然我沒(méi)有寫(xiě)文章介紹权逗,但是不代表它的作用不夠強(qiáng)大况木,他是我們能夠處理ActivityFragment的生命周期的重要原因,在AndroidXFragmentActivity已經(jīng)對(duì)Lifecycle提供了默認(rèn)支持旬迹。
  • ViewModel:當(dāng)做MVVMViewModel層火惊,并具有聲明周期意識(shí)的處理和UI相關(guān)的數(shù)據(jù)。
  • LiveData:同RxJava的作用一樣奔垦,對(duì)數(shù)據(jù)進(jìn)行監(jiān)聽(tīng)屹耐,優(yōu)點(diǎn)就是無(wú)需處理生命周期、無(wú)內(nèi)存泄漏等椿猎。
  • Room:強(qiáng)大的ORM數(shù)據(jù)庫(kù)框架惶岭。
  • Paging:易于使用的數(shù)據(jù)分頁(yè)庫(kù),支持RecyclerView犯眠。
  • WorkManager:靈活按灶、簡(jiǎn)單、延遲和保證執(zhí)行的后臺(tái)任務(wù)處理庫(kù)筐咧。

3. 你可能選擇Android Jetpack的原因

以下可能是你會(huì)選擇Android Jetpack的原因:

  1. 一起使用更方便:因?yàn)?code>Android Jetpack組件中的很多庫(kù)都對(duì)其他庫(kù)提供了支持鸯旁,比如RoomPaging就對(duì)LiveData提供了支持。
  2. 向后兼容:基本上每個(gè)組件都對(duì)低版本提供了支持量蕊。
  3. 支持RxJava:由于RxJava強(qiáng)大的生態(tài)環(huán)境铺罢,幾乎和數(shù)據(jù)相關(guān)的組件都對(duì)RxJava提供了支持。
  4. 減少代碼量:以Data Binding + ViewModel + LiveDataRxJava構(gòu)建的MVVM模式能夠顯著減少代碼量残炮,比較平時(shí)使用的MVP模式也會(huì)更加方便韭赘,無(wú)需主動(dòng)更新UI。
  5. 無(wú)需捆綁:Android Jetpack系列組件可以無(wú)需捆綁使用势就,你如果只想用里面的單個(gè)庫(kù)泉瞻,那么就可以?xún)H僅依賴(lài)一個(gè)庫(kù)。

Android Jetpack的一些缺點(diǎn)

即使Android Jetpack來(lái)自于谷歌官方苞冯,但是你也可能有太多的理由拒絕它袖牙!比如:

  • RxJava那么強(qiáng)大,我會(huì)什么要選擇LiveData?
  • Navigation的底層對(duì)Fragment的管理直接采取了替換的方式抱完,雖然它可以配合BottomNavigationView使用贼陶,但每次都重新加載顯然是不合理的。
  • Room和其他數(shù)據(jù)庫(kù)框架相比,顯然沒(méi)有什么的優(yōu)勢(shì)碉怔,并且烘贴,我為什么還要多學(xué)一種數(shù)據(jù)庫(kù)框架呢?并且撮胧,Room的遷移也比較繁瑣桨踪。
  • ...

其實(shí),比較難以讓人難以接受的也就LiveDataNavigation的替換方式的采取芹啥,其他而言锻离,Android Jetpack系列組件仍然值得一試。

Android Jetpack要學(xué)嗎墓怀?

學(xué)汽纠,肯定要學(xué),Android Jetpack于谷歌而言傀履,這是他們重新整理和統(tǒng)一安卓生態(tài)環(huán)境決心的體現(xiàn)虱朵,Android Jetpack所展現(xiàn)的內(nèi)容,也是谷歌想拓展和維護(hù)的方向钓账。于長(zhǎng)期苦惱于第三方庫(kù)選擇的廣大Android開(kāi)發(fā)者而言碴犬,這是谷歌為我們提供的一盞明燈。

也許梆暮,Android Jetpack系列的部分庫(kù)還沒(méi)成熟到成為你工作的第一選擇服协,但是,深入學(xué)習(xí)Android Jetpack組件會(huì)為你提供與谷歌大佬深入交流的機(jī)會(huì)啦粹,為你日常的開(kāi)發(fā)帶來(lái)一些想法偿荷,不過(guò),遺憾的是卖陵,即學(xué)即用Android Jetpack系列博客的目的僅僅是為初學(xué)者提供入門(mén)指導(dǎo)遭顶,對(duì)于進(jìn)階研究,可以閱讀卻把青梅嗅的《Android Jetpack專(zhuān)欄》泪蔫。

寫(xiě)在最后的話(huà)

除去可以學(xué)到Kotlin + MVVM + Android Jetpack的知識(shí),相信你還可以在我的項(xiàng)目中學(xué)到:

  1. ConstraintLayout的使用喘批,幾乎每個(gè)界面布局都采用的ConstraintLayout撩荣。
  2. 符合《阿里Android開(kāi)發(fā)手冊(cè)》的標(biāo)準(zhǔn)化資源命名方式。

如果即學(xué)即用系列博客和開(kāi)源項(xiàng)目Hoo能夠給你帶來(lái)幫助饶深,那也是我所希望看到餐曹,感謝閱讀~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市敌厘,隨后出現(xiàn)的幾起案子台猴,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饱狂,死亡現(xiàn)場(chǎng)離奇詭異曹步,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)休讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)讲婚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俊柔,你說(shuō)我怎么就攤上這事筹麸。” “怎么了雏婶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵物赶,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我留晚,道長(zhǎng)酵紫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任倔丈,我火速辦了婚禮憨闰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘需五。我一直安慰自己鹉动,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布宏邮。 她就那樣靜靜地躺著泽示,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蜜氨。 梳的紋絲不亂的頭發(fā)上械筛,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音飒炎,去河邊找鬼埋哟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛郎汪,可吹牛的內(nèi)容都是我干的赤赊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼煞赢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抛计!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起照筑,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吹截,失蹤者是張志新(化名)和其女友劉穎瘦陈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體波俄,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晨逝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弟断。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咏花。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阀趴,靈堂內(nèi)的尸體忽然破棺而出昏翰,到底是詐尸還是另有隱情,我是刑警寧澤刘急,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布棚菊,位于F島的核電站,受9級(jí)特大地震影響叔汁,放射性物質(zhì)發(fā)生泄漏统求。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一据块、第九天 我趴在偏房一處隱蔽的房頂上張望码邻。 院中可真熱鬧,春花似錦另假、人聲如沸像屋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)己莺。三九已至,卻和暖如春戈轿,著一層夾襖步出監(jiān)牢的瞬間凌受,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工思杯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胜蛉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓色乾,卻偏偏與公主長(zhǎng)得像腾么,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杈湾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容