
簡介
Jetpack是一套庫、工具和指南,可以幫助開發者更輕松地撰寫優質應用,這些組件可以幫助開發者遵循最佳做法、讓開發者擺脫撰寫樣板代碼的作業并簡化復雜任務,以便開發者將精力集中放在所需的代碼上,
Android Jetpack組件的作用是什么?
-
Navigation:一個用于管理Fragment切換的工具類,可視化、可系結控制元件、支持影片等是其優點,
-
Data Binding:不用說,都知道,加速MVVM的創建,
-
Lifecycle:他是我們能夠處理Activity和Fragment的生命周期的重要原因,在AndroidX的Fragment和Activity已經對Lifecycle提供了默認支持,
-
ViewModel:當做MVVM的ViewModel層,并具有宣告周期意識的處理和UI相關的資料,
-
LiveData:同RxJava的作用一樣,對資料進行監聽,優點就是無需處理生命周期、無記憶體泄漏等,
-
Room:強大的ORM資料庫框架,
-
Paging:易于使用的資料分頁庫,支持RecyclerView,WorkManager:靈活、簡單、延遲和保證執行的后臺任務處理庫,
你可能選擇Android Jetpack的原因
以下可能是你會選擇Android Jetpack的原因:
-
一起使用更方便:因為Android Jetpack組件中的很多庫都對其他庫提供了支持,比如Room和Paging就對LiveData提供了支持,
-
向后兼容:基本上每個組件都對低版本提供了支持,
-
支持RxJava:由于RxJava強大的生態環境,幾乎和資料相關的組件都對RxJava提供了支持,
-
減少代碼量:以Data Binding + ViewModel + LiveData或RxJava構建的MVVM模式能夠顯著減少代碼量,比較平時使用的MVP模式也會更加方便,無需主動更新UI,
-
無需捆綁:Android Jetpack系列組件可以無需捆綁使用,你如果只想用里面的單個庫,那么就可以僅僅依賴一個庫,
Android Jetpack要學嗎?
學,肯定要學,Android Jetpack于谷歌而言,這是他們重新整理和統一安卓生態環境決心的體現,Android Jetpack所展現的內容,也是谷歌想拓展和維護的方向,于長期苦惱于第三方庫選擇的廣大Android開發者而言,這是谷歌為我們提供的一盞明燈,
也許,Android Jetpack系列的部分庫還沒成熟到成為你作業的第一選擇,但是,深入學習Android Jetpack組件會為你提供與谷歌大佬深入交流的機會,為你日常的開發帶來一些想法,
如何學習?
如果你是因為缺少學習資料,而我正好薅到這本阿里巴巴內部Jetpack寶典,從入門到精通,教程通俗易懂,實體豐富,既有基礎知識,也有進階技能,能夠幫助讀者快速入門,是你學習Jetpack的葵花寶典,
朋友們如果有需要全套《Jetpack架構組件從入門到精通》,直接劃到文末免費領取哦~
Android Jetpack - Navigation
Navigation 直接翻譯即為導航,它是 Android Jetpack 組件之一,讓單 Activity 應用成為首選架構,應用內Fragment頁面的跳轉則由 Navigation 來處理,開發者無需在處理 FragmentTransaction 的復雜性以及相關的轉場影片,


Android Jetpack - Data Binding
Data Binding 是一個支持庫,它使用一種 宣告的方式 代替 編碼的方式,用來系結 UI 控制元件和資料源,
通常我們會在 activity 里面呼叫 UI 框架層的方法宣告 view,例如,下面的代碼呼叫了 findViewById() 宣告了一個 TextView 控制元件,并且把它和 viewModel 的 userName 屬性進行了系結:
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
下面的代碼展示了如何使用 Data Binding 在布局里面直接給 TextView 的 test 屬性進行賦值,這么做的好處是不必再像上面的例子一樣呼叫 Java 代碼,注意在賦值運算式中使用的語法是 @{}:
<TextView
android:text="@{viewmodel.userName}" />
在布局里面直接系結 UI 控制元件,可以減少在 activity 中 UI 框架方法的呼叫,這使得代碼更加簡潔、更容易維護,它還可以提升 App 的性能,避免記憶體泄漏和空指標例外,


Android Jetpack - ViewModel & LiveData
ViewModel將視圖和邏輯進行了分離,Activity或者Fragment只負責UI顯示部分,具體的網路請求或者資料庫操作則有ViewModel負責,類似于MVP模式中的Presenter層,ViewModel類旨在以注重生命周期的方式存盤和管理界面相關的資料,讓資料可在發生螢屏旋轉等配置更改后繼續留存,我們知道類似旋轉螢屏等配置項改變會導致我們的 Activity 被銷毀并重建,此時 Activity 持有的資料就會跟隨著丟失,而ViewModel 則并不會被銷毀,從而能夠幫助我們在這個程序中保存資料,并且ViewModel不持有View層的實體,通過LiveData與Activity或者Fragment通訊,不用擔心潛在的記憶體泄漏問題,
LiveData 是一種可觀察的資料存盤器類,與常規的可觀察類不同,LiveData 具有生命周期感知能力,意指它遵循其他應用組件(如 Activity、Fragment 或 Service)的生命周期,這種感知能力可確保LiveData當資料源發生變化的時候,通知它的觀察者更新UI界面,同時它只會通知處于Active狀態的觀察者更新界面,如果某個觀察者的狀態處于Paused或Destroyed時那么它將不會收到通知,所以不用擔心記憶體泄漏問題,


Android Jetpack - Room
Room是Jetpack組件庫一員,屬于ORM庫,主要是對Sqlite做了一層抽象,從而簡化開發者對資料庫操作,Room支持編譯時的語法檢查,并且支持回傳LiveData,
添加依賴
在app的build.gradle中添加如下依賴:
def room_version = "2.2.0-rc01"
implementation "androidx.room:room-runtime:$room_version"
// For Kotlin use kapt instead of annotationProcessor (注意這個注釋)
kapt "androidx.room:room-compiler:$room_version"
如果專案是使用Kotlin語言來開發的,在添加room-compiler的時候使用kapt關鍵字,java語言開發的就使用annotationProcessor關鍵,否則會導致訪問出錯,


Android Jetpack - Paging
很多應用程式從包含大量專案的資料源中獲取資料,但一次只顯示一小部分資料,加載應用程式中顯示的資料可能很大并且代價高昂,因此要避免一次下載,創建或呈現太多資料,為了可以更輕松地在我們的應用程式中逐漸加載資料谷歌方法提供了這個組件,可以很容易地加載和現在的大資料集與我們的RecyclerView快速,無限滾動,它可以從本地存盤,網路或兩者加載分頁資料,并且可以讓我們自定義如何加載內容,它可以與Room,LiveData和RxJava一起使用,
Paging Libray分為三部分:DataSource, PagedList, PagedAdapter


Android Jetpack - WorkManger
WorkManager是Android Jetpack 中管理后臺任務的組件,
常見的使用場景:1.向后端服務發送日志或分析資料 2.定期將應用資料與服務器同步
使用 WorkManager API 可以輕松地調度后臺任務,可延遲運行(即不需要立即運行)并且在應用退出(行程未關閉)或應用重啟時能夠可靠運行的任務,


Android Jetpack架構組件之Lifecycle
為了應用的安全,經常會有從后臺切回前臺時進行軟體確認等安全確認處理的需求,如果是以前的話,這個需求其實是挺難實作的, 但自從Google推出Lifecycle組件以后,這個需求就簡單了很多,Lifecycle除了感知從后臺切回前臺以外, 利用這個組件可以更簡單的實作復雜的處理生命周期的操作


Android Jetpack Compose 最全上手指南
Jetpack Compose 是一個用于構建原生Android UI 的現代化工具包,它基于宣告式的編程模型,因此你可以簡單地描述UI的外觀,而Compose則負責其余的作業-當狀態發生改變時,你的UI將自動更新,由于Compose基于Kotlin構建,因此可以與Java編程語言完全互操作,并且可以直接訪問所有AndroidJetpack API,它與現有的UI工具包也是完全兼容的,因此你可以混合原來的View和現在新的View,并且從一開始就使用Material和影片進行設計,


結語
由于文章篇幅有限,僅展示一部分內容,此份筆記還包含 Android Jetpack架構組件–App Startup、Android Jetpack最新組件介紹、Android Jetpack專案實戰(從0搭建Jetpack版的WanAndroid客戶端)、專案實戰等等,
朋友們如果有需要,可以我的【Github】閱讀下載.

點擊我免費獲取
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/211649.html
標籤:java
上一篇:A. Magic Numbers
下一篇:某安卓圖形化界面運行例外問題分析
