1、什么是Jetpack
Google 官方解釋:
Jetpack 是一個(gè)由多個(gè)庫(kù)組成的套件,可幫助開(kāi)發(fā)者遵循最佳做法,減少樣板代碼并編寫(xiě)可在各種 Android 版本和設(shè)備中一致運(yùn)行的代碼,讓開(kāi)發(fā)者精力集中編寫(xiě)重要的代碼。
Jetpack 是 Google 為解決 Android 開(kāi)發(fā)碎片化,打造成熟健康生態(tài)圈提出的戰(zhàn)略規(guī)劃,是 Google 對(duì) Android 未來(lái)提出的發(fā)展方向,同時(shí)它也是眾多優(yōu)秀 Android 組件的集合。
2、為何使用 Android Jetpack
遵循最佳做法:Android Jetpack 組件采用最新的設(shè)計(jì)方法構(gòu)建,具有向后兼容性,可以減少崩潰和內(nèi)存泄露。
消除樣板代碼:Android Jetpack 可以管理各種繁瑣的 Activity(如后臺(tái)任務(wù)、導(dǎo)航和生命周期管理),以便您可以專(zhuān)注于打造出色的應(yīng)用。
減少不一致:這些庫(kù)可在各種 Android 版本和設(shè)備中以一致的方式運(yùn)作,助您降低復(fù)雜性。
Jetpack 的優(yōu)勢(shì):
Jetpack 擁有基于生命周期感知的能力,可以減少 NPE(空指針異常) 崩潰、內(nèi)存泄漏,為開(kāi)發(fā)出健壯且流暢的程序提供強(qiáng)力保障;
Jetpack 可以消除大量重復(fù)樣板式的代碼,可以加速 Android 的開(kāi)發(fā)進(jìn)程,組件可搭配工作,也可單獨(dú)使用,同時(shí)配合 Kotlin 語(yǔ)言特性能夠顯著提高工作效率;
統(tǒng)一開(kāi)發(fā)模式,拋棄傳統(tǒng)的 MVC, MVP;
3、JetPack 的構(gòu)成

Android Jetpack組件共分為四大類(lèi),Architecture、Foundation、Behavior和UI。
Architecture(架構(gòu)組件):
架構(gòu)組件可幫助開(kāi)發(fā)者設(shè)計(jì)穩(wěn)健、可測(cè)試且易維護(hù)的應(yīng)用。它包含如下組件庫(kù):
- Data Binding(數(shù)據(jù)綁定):數(shù)據(jù)綁定庫(kù)是一種支持庫(kù),借助該庫(kù),可以使用聲明式將布局中的界面組件綁定到應(yīng)用中的數(shù)據(jù)源。
- Lifecycles:方便管理 Activity 和 Fragment 生命周期,幫助開(kāi)發(fā)者書(shū)寫(xiě)更輕量、易于維護(hù)的代碼。
- LiveData:是一個(gè)可觀察的數(shù)據(jù)持有者類(lèi)。與常規(guī)observable不同,LiveData是有生命周期感知的。
- Navigation:處理應(yīng)用內(nèi)導(dǎo)航所需的一切。
- Paging:幫助開(kāi)發(fā)者一次加載和顯示小塊數(shù)據(jù)。按需加載部分?jǐn)?shù)據(jù)可減少網(wǎng)絡(luò)帶寬和系統(tǒng)資源的使用。
- Room:Room持久性庫(kù)在SQLite上提供了一個(gè)抽象層,幫助開(kāi)發(fā)者更友好、流暢的訪問(wèn)SQLite數(shù)據(jù)庫(kù)。
- ViewModel:以生命周期感知的方式存儲(chǔ)和管理與UI相關(guān)的數(shù)據(jù)。
- WorkManager:即使應(yīng)用程序退出或設(shè)備重新啟動(dòng),也可以輕松地調(diào)度預(yù)期將要運(yùn)行的可延遲異步任務(wù)。
Foundation(基礎(chǔ)組件):
基礎(chǔ)組件提供了橫向功能,例如向后兼容性、測(cè)試以及Kotlin語(yǔ)言的支持。它包含如下組件庫(kù):
- Android KTX:Android KTX 是一組 Kotlin 擴(kuò)展程序,它優(yōu)化了供Kotlin使用的Jetpack和Android平臺(tái)的API。以更簡(jiǎn)潔、更愉悅、更慣用的方式使用Kotlin進(jìn)行Android開(kāi)發(fā)。
- AppCompat:提供了一系列以AppCompat開(kāi)頭的API,以便兼容低版本的Android開(kāi)發(fā)。
- Cars(Auto):有助于開(kāi)發(fā) Android Auto 應(yīng)用的組件,無(wú)需擔(dān)心特定于車(chē)輛的硬件差異(如屏幕分辨率、軟件界面、旋鈕和觸摸式控件)。
- Benchmark(檢測(cè)):從 Android Studio 中快速對(duì)基于 Kotlin 或 Java 的代碼進(jìn)行基準(zhǔn)化分析。衡量代碼性能,并將基準(zhǔn)化分析結(jié)果輸出到 Android Studio 控制臺(tái)。
- Multidex(多Dex處理):為方法數(shù)超過(guò) 64K 的應(yīng)用啟用多 dex 文件。
- Security(安全):按照安全最佳做法讀寫(xiě)加密文件和共享偏好設(shè)置。
- Test(測(cè)試):用于單元和運(yùn)行時(shí)界面測(cè)試的 Android 測(cè)試框架。
- TV:構(gòu)建可讓用戶在大屏幕上體驗(yàn)沉浸式內(nèi)容的應(yīng)用。
- Wear OS:有助于開(kāi)發(fā) Wear 應(yīng)用的組件。
Behavior(行為):
行為組件可幫助開(kāi)發(fā)者的應(yīng)用與標(biāo)準(zhǔn) Android 服務(wù)(如通知、權(quán)限、分享和 Google 助理)相集成。它包含如下組件庫(kù):
- CameraX:幫助開(kāi)發(fā)者簡(jiǎn)化相機(jī)應(yīng)用的開(kāi)發(fā)工作。它提供一致且易于使用的 API 界面,適用于大多數(shù) Android 設(shè)備,并可向后兼容至 Android 5.0(API 級(jí)別 21)。
- DownloadManager(下載管理器):可處理長(zhǎng)時(shí)間運(yùn)行的HTTP下載,并在出現(xiàn)故障或在連接更改和系統(tǒng)重新啟動(dòng)后重試下載。
- Media & playback(媒體&播放):用于媒體播放和路由(包括 Google Cast)的向后兼容 API。
- Notifications(通知):提供向后兼容的通知 API,支持 Wear 和 Auto。
- Permissions(權(quán)限):用于檢查和請(qǐng)求應(yīng)用權(quán)限的兼容性 API。
- Preferences(偏好設(shè)置):提供了用戶能夠改變應(yīng)用的功能和行為能力。
- Sharing(共享):提供適合應(yīng)用操作欄的共享操作。
- Slices(切片):創(chuàng)建可在應(yīng)用外部顯示應(yīng)用數(shù)據(jù)的靈活界面元素。
UI(界面組件):
界面組件可提供各類(lèi)view和輔助程序,讓?xiě)?yīng)用不僅簡(jiǎn)單易用,還能帶來(lái)愉悅體驗(yàn)。它包含如下組件庫(kù):
- Animation & Transitions(動(dòng)畫(huà)&過(guò)度):提供各類(lèi)內(nèi)置動(dòng)畫(huà),也可以自定義動(dòng)畫(huà)效果。
- Emoji(表情符號(hào)):使用戶在未更新系統(tǒng)版本的情況下也可以使用表情符號(hào)。
- Fragment:組件化界面的基本單位。
- Layout(布局):xml書(shū)寫(xiě)的界面布局或者使用Compose完成的界面。
- Palette(調(diào)色板):從調(diào)色板中提取出有用的信息。