學習Android Jetpack? 實戰和教程這裏全都有!

前言

在以前一個月的裏,我係統的學習了Android Jetpack組件,並輸出了即學即用Android Jetpack系列文章🚀:android

第一篇:《即學即用Android Jetpack - Navigation》
第二篇:《即學即用Android Jetpack - Data Binding》
第三篇:《即學即用Android Jetpack - ViewModel & LiveData》
第四篇:《即學即用Android Jetpack - Room》
第五篇:《即學即用Android Jetpack - Paging》
第六篇:《即學即用Android Jetpack - WorkManger》git

該系列文章的意義在於指導初學者從零到一搭建一個MVVM + Anroid Jetpack組件的App,最終完成一個以下的案例:github

圖片 圖片
註冊登陸
選擇品牌
點擊喜歡
更換頭像

項目地址:github.com/mCyp/Hoo數據庫

確認過眼神,是迷戀鞋的人~。須要且必要說明的是,該項目的一部分參考自谷歌的官方示例:android-sunflower設計模式

本項目採用的語言是Kotlin,**爲何是Kotlin?**顯然,谷歌已經宣佈Kotlin成爲開發安卓的首選語言,且從此的新出的東西會優先支持Kotlin網絡

爲何是Android Jetpack?

1. 從零到一搭建

Android Jetpack是谷歌推出的加快Android應用開發的組件,而本應用使用的一部分僅僅是左上角綠色的一部分: 架構

Jetpack
這張圖其實有點舊了,由於在今年五月份的谷歌開發者大會,推出了 CameraX。不過,仍然能夠預見的是,谷歌在致力於安卓生態環境的搭建。

個人Demo採用MVVM的設計模式,這一點能夠從個人架構圖能夠看出: 框架

系統架構
示例Demo少了網絡請求的部分,不過我以爲對於指導總體搭建的影響不是很大。

2. Android Jetpack爲咱們作了什麼?

其實我以爲這個問題能夠簡化爲Android Jetpack組件的做用是什麼?工具

  • Navigation:一個用於管理Fragment切換的工具類,可視化、可綁定控件、支持動畫等是其優勢。
  • Data Binding:不用說,都知道,加速MVVM的建立。
  • Lifecycle:雖然我沒有寫文章介紹,可是不表明它的做用不夠強大,他是咱們可以處理ActivityFragment的生命週期的重要緣由,在AndroidXFragmentActivity已經對Lifecycle提供了默認支持。
  • ViewModel:當作MVVMViewModel層,並具備聲明週期意識的處理和UI相關的數據。
  • LiveData:同RxJava的做用同樣,對數據進行監聽,優勢就是無需處理生命週期、無內存泄漏等。
  • Room:強大的ORM數據庫框架。
  • Paging:易於使用的數據分頁庫,支持RecyclerView
  • WorkManager:靈活、簡單、延遲和保證執行的後臺任務處理庫。

3. 你可能選擇Android Jetpack的緣由

如下多是你會選擇Android Jetpack的緣由:佈局

  1. 一塊兒使用更方便:由於Android Jetpack組件中的不少庫都對其餘庫提供了支持,好比RoomPaging就對LiveData提供了支持。
  2. 向後兼容:基本上每一個組件都對低版本提供了支持。
  3. 支持RxJava:因爲RxJava強大的生態環境,幾乎和數據相關的組件都對RxJava提供了支持。
  4. 減小代碼量:以Data Binding + ViewModel + LiveDataRxJava構建的MVVM模式可以顯著減小代碼量,比較平時使用的MVP模式也會更加方便,無需主動更新UI。
  5. 無需捆綁:Android Jetpack系列組件能夠無需捆綁使用,你若是隻想用裏面的單個庫,那麼就能夠僅僅依賴一個庫。

Android Jetpack的一些缺點

即便Android Jetpack來自於谷歌官方,可是你也可能有太多的理由拒絕它!好比:

  • RxJava那麼強大,我會什麼要選擇LiveData?
  • Navigation的底層對Fragment的管理直接採起了替換的方式,雖然它能夠配合BottomNavigationView使用,但每次都從新加載顯然是不合理的。
  • Room和其餘數據庫框架相比,顯然沒有什麼的優點,而且,我爲何還要多學一種數據庫框架呢?而且,Room的遷移也比較繁瑣。
  • ...

其實,比較難以讓人難以接受的也就LiveDataNavigation的替換方式的採起,其餘而言,Android Jetpack系列組件仍然值得一試。

Android Jetpack要學嗎?

學,確定要學,Android Jetpack於谷歌而言,這是他們從新整理和統一安卓生態環境決心的體現,Android Jetpack所展示的內容,也是谷歌想拓展和維護的方向。於長期苦惱於第三方庫選擇的廣大Android開發者而言,這是谷歌爲咱們提供的一盞明燈。

也許,Android Jetpack系列的部分庫還沒成熟到成爲你工做的第一選擇,可是,深刻學習Android Jetpack組件會爲你提供與谷歌大佬深刻交流的機會,爲你平常的開發帶來一些想法,不過,遺憾的是,即學即用Android Jetpack系列博客的目的僅僅是爲初學者提供入門指導,對於進階研究,能夠閱讀卻把青梅嗅的《Android Jetpack專欄》。

寫在最後的話

除去能夠學到Kotlin + MVVM + Android Jetpack的知識,相信你還能夠在個人項目中學到:

  1. ConstraintLayout的使用,幾乎每一個界面佈局都採用的ConstraintLayout
  2. 符合《阿里Android開發手冊》的標準化資源命名方式。

若是即學即用系列博客和開源項目Hoo可以給你帶來幫助,那也是我所但願看到,感謝閱讀~

相關文章
相關標籤/搜索