技術(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)過眼神,是迷戀鞋的人~。需要且必要說明的是,該項(xiàng)目的一部分參考自谷歌的官方示例:android-sunflower
本項(xiàng)目采用的語言是Kotlin,為什么是Kotlin?顯然,谷歌已經(jīng)宣布Kotlin成為開發(fā)安卓的首選語言,且今后的新出的東西會(huì)優(yōu)先支持Kotlin。
為什么是Android Jetpack?
1. 從零到一搭建
Android Jetpack是谷歌推出的加快Android應(yīng)用開發(fā)的組件,而本應(yīng)用使用的一部分僅僅是左上角綠色的一部分:

CameraX。不過,仍然可以預(yù)見的是,谷歌在致力于安卓生態(tài)環(huán)境的搭建。
我的Demo采用MVVM的設(shè)計(jì)模式,這一點(diǎn)可以從我的架構(gòu)圖可以看出:

示例Demo少了網(wǎng)絡(luò)請(qǐng)求的部分,不過我覺得對(duì)于指導(dǎo)整體搭建的影響不是很大。
2. Android Jetpack為我們做了什么?
其實(shí)我覺得這個(gè)問題可以簡(jiǎn)化為Android Jetpack組件的作用是什么?
-
Navigation:一個(gè)用于管理
Fragment切換的工具類,可視化、可綁定控件、支持動(dòng)畫等是其優(yōu)點(diǎn)。 -
Data Binding:不用說,都知道,加速
MVVM的創(chuàng)建。 -
Lifecycle:雖然我沒有寫文章介紹,但是不代表它的作用不夠強(qiáng)大,他是我們能夠處理
Activity和Fragment的生命周期的重要原因,在AndroidX的Fragment和Activity已經(jīng)對(duì)Lifecycle提供了默認(rèn)支持。 -
ViewModel:當(dāng)做
MVVM的ViewModel層,并具有聲明周期意識(shí)的處理和UI相關(guān)的數(shù)據(jù)。 -
LiveData:同
RxJava的作用一樣,對(duì)數(shù)據(jù)進(jìn)行監(jiān)聽,優(yōu)點(diǎn)就是無需處理生命周期、無內(nèi)存泄漏等。 - Room:強(qiáng)大的ORM數(shù)據(jù)庫框架。
-
Paging:易于使用的數(shù)據(jù)分頁庫,支持
RecyclerView。 - WorkManager:靈活、簡(jiǎn)單、延遲和保證執(zhí)行的后臺(tái)任務(wù)處理庫。
3. 你可能選擇Android Jetpack的原因
以下可能是你會(huì)選擇Android Jetpack的原因:
- 一起使用更方便:因?yàn)?code>Android Jetpack組件中的很多庫都對(duì)其他庫提供了支持,比如
Room和Paging就對(duì)LiveData提供了支持。 - 向后兼容:基本上每個(gè)組件都對(duì)低版本提供了支持。
- 支持
RxJava:由于RxJava強(qiáng)大的生態(tài)環(huán)境,幾乎和數(shù)據(jù)相關(guān)的組件都對(duì)RxJava提供了支持。 - 減少代碼量:以
Data Binding + ViewModel + LiveData或RxJava構(gòu)建的MVVM模式能夠顯著減少代碼量,比較平時(shí)使用的MVP模式也會(huì)更加方便,無需主動(dòng)更新UI。 - 無需捆綁:
Android Jetpack系列組件可以無需捆綁使用,你如果只想用里面的單個(gè)庫,那么就可以僅僅依賴一個(gè)庫。
Android Jetpack的一些缺點(diǎn)
即使Android Jetpack來自于谷歌官方,但是你也可能有太多的理由拒絕它!比如:
-
RxJava那么強(qiáng)大,我會(huì)什么要選擇LiveData? -
Navigation的底層對(duì)Fragment的管理直接采取了替換的方式,雖然它可以配合BottomNavigationView使用,但每次都重新加載顯然是不合理的。 -
Room和其他數(shù)據(jù)庫框架相比,顯然沒有什么的優(yōu)勢(shì),并且,我為什么還要多學(xué)一種數(shù)據(jù)庫框架呢?并且,Room的遷移也比較繁瑣。 - ...
其實(shí),比較難以讓人難以接受的也就LiveData和Navigation的替換方式的采取,其他而言,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)期苦惱于第三方庫選擇的廣大Android開發(fā)者而言,這是谷歌為我們提供的一盞明燈。
也許,Android Jetpack系列的部分庫還沒成熟到成為你工作的第一選擇,但是,深入學(xué)習(xí)Android Jetpack組件會(huì)為你提供與谷歌大佬深入交流的機(jī)會(huì),為你日常的開發(fā)帶來一些想法,不過,遺憾的是,即學(xué)即用Android Jetpack系列博客的目的僅僅是為初學(xué)者提供入門指導(dǎo),對(duì)于進(jìn)階研究,可以閱讀卻把青梅嗅的《Android Jetpack專欄》。
寫在最后的話
除去可以學(xué)到Kotlin + MVVM + Android Jetpack的知識(shí),相信你還可以在我的項(xiàng)目中學(xué)到:
-
ConstraintLayout的使用,幾乎每個(gè)界面布局都采用的ConstraintLayout。 - 符合《阿里Android開發(fā)手冊(cè)》的標(biāo)準(zhǔn)化資源命名方式。
如果即學(xué)即用系列博客和開源項(xiàng)目Hoo能夠給你帶來幫助,那也是我所希望看到,感謝閱讀~



