還不知道Jetpack,你可能趕不上Android開(kāi)發(fā)時(shí)代的新腳步
第一次看文章的朋友可以關(guān)注我,會(huì)不定期發(fā)布Android面試內(nèi)容、進(jìn)階專題等等。
有句話說(shuō)得好“落后就要挨打”,你想不想被淘汰呢?
簡(jiǎn)介
谷歌在 2018 I/O 大會(huì)上發(fā)布了一系列輔助android開(kāi)發(fā)者的實(shí)用工具,這套工具就是Jetpack,它是一套庫(kù)、工具和指南的合集,可以幫助開(kāi)發(fā)者更輕松地編寫(xiě)和構(gòu)建出色的 Android 應(yīng)用程序。
Jetpack中的有些組件并不是第一次推出,其中LifeCycle、LiveData、ViewModel、Room等組件早在 Google I/O 2017年大會(huì)上就隨著 Android Architecture Component(AAC)一起推出了,但是推廣效果一般。時(shí)隔一年后谷歌在AAC的基礎(chǔ)之上發(fā)布了Jetpack,并發(fā)布了其他工具以解決Android技術(shù)選型亂以及開(kāi)發(fā)不規(guī)范等問(wèn)題。
Jetpack有以下特點(diǎn):
- 加速開(kāi)發(fā):組件可以單獨(dú)采用(不過(guò)這些組件是為協(xié)同工作而構(gòu)建的),同時(shí)利用 Kotlin 語(yǔ)言功能幫助您提高工作效率。
- 消除樣板代碼:Jetpack 可管理繁瑣的 Activity(如后臺(tái)任務(wù)、導(dǎo)航和生命周期管理)。
- 構(gòu)建高質(zhì)量的強(qiáng)大應(yīng)用:Jetpack 組件圍繞現(xiàn)代化設(shè)計(jì)實(shí)踐構(gòu)建而成,具有向后兼容性,可以減少崩潰和內(nèi)存泄漏。
Jetpack分類
Android Jetpack組件共分為四大類,F(xiàn)oundation、Architecture、Behavior和UI。
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)心特定于車輛的硬件差異(如屏幕分辨率、軟件界面、旋鈕和觸摸式控件)。
- 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)用的組件。
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ù)持有者類。與常規(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ù)。
谷歌推薦的應(yīng)用架構(gòu):
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(界面組件):
界面組件可提供各類view和輔助程序,讓?xiě)?yīng)用不僅簡(jiǎn)單易用,還能帶來(lái)愉悅體驗(yàn)。它包含如下組件庫(kù):
- Animation & Transitions(動(dòng)畫(huà)&過(guò)度):提供各類內(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)色板中提取出有用的信息。
使用Jetpack
目前Jetpack組件已經(jīng)包含在AndroidX中,所以如果項(xiàng)目以及遷移到了AndroidX了,就不需要額外導(dǎo)包。如果沒(méi)有兼容AndroidX 那么需要在gradle中進(jìn)行配置:
打開(kāi)項(xiàng)目的build.gradle添加google()代碼庫(kù),如下:
allprojects {
repositories {
google()
jcenter()
}}復(fù)制代碼
比如只是單純的使用Lifecycle,那么打開(kāi)app的build.gradle 進(jìn)行依賴的添加:
implementation "android.arch.lifecycle:runtime:$lifecycle_version"annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version"implementation "android.arch.lifecycle:common-java8:$lifecycle_version"復(fù)制代碼
總結(jié)
本篇文章主要介紹了Jetpack組件的由來(lái)以及分類,詳細(xì)解釋了每一個(gè)細(xì)分組件的含義。讓大家對(duì)Jetpack有充分的了解,每一個(gè)組件都可以單獨(dú)或者組合使用。
還有Java語(yǔ)言進(jìn)階與內(nèi)核、Android進(jìn)階、移動(dòng)架構(gòu)師項(xiàng)目、微信小程序員開(kāi)發(fā)、跨平臺(tái)flutter開(kāi)發(fā)等學(xué)習(xí)視頻
Android學(xué)習(xí)PDF_源碼筆記_面試文檔_進(jìn)階視頻.pdf