大廠Jetpack內部資料意外流出!Android架構天花板

簡介

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組件中的很多庫都對其他庫提供了支持,比如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組件會為你提供與谷歌大佬深入交流的機會,為你日常的開發帶來一些想法。

Android Jetpack – Navigation

Navigation 直接翻譯即為導航,它是 Android Jetpack 組件之一,讓單 Activity 應用成為首選架構。應用內Fragment頁面的跳轉則由
Navigation 來處理,開發者無需再處理 FragmentTransaction 的複雜性以及相關的轉場動畫。

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

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
的性能,避免記憶體泄漏和空指針異常。

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

Android Jetpack – ViewModel & LiveData

ViewModel將視圖和邏輯進行了分離。Activity或者Fragment只負責UI顯示部分。具體的網絡請求或者資料庫操作則由ViewModel負責。類似於MVP模式中的Presenter層。ViewModel類旨在以注重生命週期的方式存儲和管理介面相關的數據。讓數據可在發生螢幕旋轉等配置更改後繼續留存。我們知道類似旋轉螢幕等配置項改變會導致我們的 Activity 被銷毀並重建,此時 Activity 持有的數據就會跟隨著丟失,而ViewModel 則並不會被銷毀,從而能夠幫助我們在這個過程中保存數據。並且ViewModel不持有View層的實例,通過LiveDataActivity或者Fragment通訊,不用擔心潛在的記憶體泄漏問題。

LiveData 是一種可觀察的數據存儲器類。與常規的可觀察類不同,LiveData
具有生命週期感知能力,意指它遵循其他應用組件(如
ActivityFragment Service)的生命週期。這種感知能力可確保LiveData當數據源發生變化的時候,通知它的觀察者更新UI介面。同時它只會通知處於Active狀態的觀察者更新介面,如果某個觀察者的狀態處於PausedDestroyed時那麼它將不會收到通知。所以不用擔心記憶體泄漏問題。

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

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關鍵。否則會導致訪問出錯。

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

項目實戰

Android Jetpack – Paging

很多應用程式從包含大量項目的數據源中獲取數據,但一次只顯示一小部分數據。加載應用程式中顯示的數據可能很大並且代價高昂,因此要避免一次下載,創建或呈現太多數據。為了可以更輕鬆地在我們的應用程式中逐漸加載數據谷歌方法提供了這個組件,可以很容易地加載和現在的大數據集與我們的RecyclerView快速,無限滾動。它可以從本地存儲,網絡或兩者加載分頁數據,並且可以讓我們自定義如何加載內容。它可以與Room,LiveData和RxJava一起使用。

Paging Libray分為三部分:DataSource, PagedList, PagedAdapter

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

Android Jetpack – WorkManger

WorkManager是Android Jetpack 中管理後台任務的組件。

常見的使用場景:1.向後端服務發送日誌或分析數據 2.定期將應用數據與伺服器同步

使用 WorkManager API
可以輕鬆地調度後台任務。可延遲運行(即不需要立即運行)並且在應用退出(進程未關閉)或應用重啟時能夠可靠運行的任務。

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

Android Jetpack架構組件之Lifecycle

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

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

部分截圖

Android Jetpack Compose上手指南

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

大廠Jetpack內部資料意外流出!Android架構天花板

目錄

大廠Jetpack內部資料意外流出!Android架構天花板

實戰部分截圖

結語

由於文章篇幅有限,僅展示一部分內容,此份筆記還包含 Android Jetpack架構組件–App Startup、Android
Jetpack項目實戰(從0搭建Jetpack版的WanAndroid客戶端)、
Android學習PDF+架構視頻+面試文檔等等。這些都是我經常反覆翻看的精品資料,從中不停地學習,而且里面還有近幾年大廠面試高頻知識點。大家如果需要提高自身 競爭力,可以私信我【進階】即可獲取。

大廠Jetpack內部資料意外流出!Android架構天花板來源:kknews大廠Jetpack內部資料意外流出!Android架構天花板