Jetpack 是一個(gè)由多個(gè)庫(kù)組成的套件滥酥,可幫助開發(fā)者遵循最佳做法,減少樣板代碼并編寫可在各種 Android 版本和設(shè)備中一致運(yùn)行的代碼畦幢,讓開發(fā)者精力集中編寫重要的代碼坎吻。
大體上,JetPack是Google推出的一些庫(kù)的集合宇葱。是Android基礎(chǔ)支持庫(kù)SDK以外的部分瘦真。
https://developer.android.google.cn/jetpack
為何使用 Android Jetpack?
Android Jetpack 組件采用最新的設(shè)計(jì)方法構(gòu)建黍瞧,具有向后兼容性诸尽,可以減少崩潰和內(nèi)存泄露
Android Jetpack 可以管理各種繁瑣的 Activity(如后臺(tái)任務(wù)、導(dǎo)航和生命周期管理)雷逆,以便您可以專注于打造出色的應(yīng)用弦讽。
這些庫(kù)可在各種 Android 版本和設(shè)備中以一致的方式運(yùn)作污尉,助您降低復(fù)雜性膀哲。
常見的架構(gòu)原則
如果您不應(yīng)使用應(yīng)用組件存儲(chǔ)應(yīng)用數(shù)據(jù)和狀態(tài),那么您應(yīng)該如何設(shè)計(jì)應(yīng)用呢被碗?
分離關(guān)注點(diǎn)
要遵循的最重要的原則是分離關(guān)注點(diǎn)某宪。一種常見的錯(cuò)誤是在一個(gè)?Activity?或?Fragment?中編寫所有代碼。這些基于界面的類應(yīng)僅包含處理界面和操作系統(tǒng)交互的邏輯锐朴。您應(yīng)使這些類盡可能保持精簡(jiǎn)兴喂,這樣可以避免許多與生命周期相關(guān)的問題。
請(qǐng)注意焚志,您并非擁有?Activity?和?Fragment?的實(shí)現(xiàn)衣迷;它們只是表示 Android 操作系統(tǒng)與應(yīng)用之間關(guān)系的粘合類。操作系統(tǒng)可能會(huì)根據(jù)用戶互動(dòng)或因內(nèi)存不足等系統(tǒng)條件隨時(shí)銷毀它們酱酬。為了提供令人滿意的用戶體驗(yàn)和更易于管理的應(yīng)用維護(hù)體驗(yàn)壶谒,您最好盡量減少對(duì)它們的依賴。
通過模型驅(qū)動(dòng)界面
另一個(gè)重要原則是您應(yīng)該通過模型驅(qū)動(dòng)界面(最好是持久性模型)膳沽。模型是負(fù)責(zé)處理應(yīng)用數(shù)據(jù)的組件汗菜。它們獨(dú)立于應(yīng)用中的?View?對(duì)象和應(yīng)用組件,因此不受應(yīng)用的生命周期以及相關(guān)的關(guān)注點(diǎn)的影響挑社。
持久性是理想之選陨界,原因如下:
如果 Android 操作系統(tǒng)銷毀應(yīng)用以釋放資源,用戶不會(huì)丟失數(shù)據(jù)痛阻。
當(dāng)網(wǎng)絡(luò)連接不穩(wěn)定或不可用時(shí)菌瘪,應(yīng)用會(huì)繼續(xù)工作。
應(yīng)用所基于的模型類應(yīng)明確定義數(shù)據(jù)管理職責(zé)阱当,這樣將使應(yīng)用更可測(cè)試且更一致俏扩。
Jetpack分類
Android Jetpack組件共分為四大類缀皱,F(xiàn)oundation、Architecture动猬、Behavior和UI啤斗。
基礎(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開發(fā)凤覆。
AppCompat:提供了一系列以AppCompat開頭的API链瓦,以便兼容低版本的Android開發(fā)。
Cars(Auto):有助于開發(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ù)超過 64K 的應(yīng)用啟用多 dex 文件刑峡。
Security(安全):按照安全最佳做法讀寫加密文件和共享偏好設(shè)置。
Test(測(cè)試):用于單元和運(yùn)行時(shí)界面測(cè)試的 Android 測(cè)試框架玄柠。
TV:構(gòu)建可讓用戶在大屏幕上體驗(yàn)沉浸式內(nèi)容的應(yīng)用突梦。
Wear OS:有助于開發(fā) Wear 應(yīng)用的組件。
架構(gòu)組件可幫助開發(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 生命周期,幫助開發(fā)者書寫更輕量当宴、易于維護(hù)的代碼畜吊。
LiveData:是一個(gè)可觀察的數(shù)據(jù)持有者類。與常規(guī)observable不同户矢,LiveData是有生命周期感知的玲献。
Navigation:處理應(yīng)用內(nèi)導(dǎo)航所需的一切。
Paging:幫助開發(fā)者一次加載和顯示小塊數(shù)據(jù)。按需加載部分?jǐn)?shù)據(jù)可減少網(wǎng)絡(luò)帶寬和系統(tǒng)資源的使用捌年。
Room:Room持久性庫(kù)在SQLite上提供了一個(gè)抽象層瓢娜,幫助開發(fā)者更友好、流暢的訪問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):
行為組件可幫助開發(fā)者的應(yīng)用與標(biāo)準(zhǔn) Android 服務(wù)(如通知褒颈、權(quán)限、分享和 Google 助理)相集成励堡。它包含如下組件庫(kù):
CameraX:幫助開發(fā)者簡(jiǎn)化相機(jī)應(yīng)用的開發(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ù)的靈活界面元素。
界面組件可提供各類view和輔助程序宝踪,讓應(yīng)用不僅簡(jiǎn)單易用侨糟,還能帶來(lái)愉悅體驗(yàn)。它包含如下組件庫(kù):
Animation & Transitions(動(dòng)畫&過度):提供各類內(nèi)置動(dòng)畫瘩燥,也可以自定義動(dòng)畫效果秕重。
Emoji(表情符號(hào)):使用戶在未更新系統(tǒng)版本的情況下也可以使用表情符號(hào)。
Fragment:組件化界面的基本單位厉膀。
Layout(布局):xml書寫的界面布局或者使用Compose完成的界面溶耘。
Palette(調(diào)色板):從調(diào)色板中提取出有用的信息。
Jetpack版Wan-Android項(xiàng)目地址:Android Jetpack架構(gòu)開發(fā)組件化應(yīng)用實(shí)戰(zhàn)?歡迎star
Flutter版Wan-Android項(xiàng)目地址:Flutter版Wan-Android?歡迎star