學(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)過眼神,是迷戀鞋的人~。需要且必要說明的是,該項(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)用使用的一部分僅僅是左上角綠色的一部分:

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

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


系統(tǒng)架構(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)大,他是我們能夠處理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)聽,優(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的原因:

  1. 一起使用更方便:因?yàn)?code>Android Jetpack組件中的很多庫都對(duì)其他庫提供了支持,比如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ì)更加方便,無需主動(dòng)更新UI。
  5. 無需捆綁: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í),比較難以讓人難以接受的也就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)期苦惱于第三方庫選擇的廣大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é)到:

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容