前言
Android已經(jīng)發(fā)展了11年,可以說是比較成熟的技術(shù)了堤瘤,一開始時(shí)框架很少玫芦,也沒有什么規(guī)范,所有的代碼都是要自己寫本辐,比如網(wǎng)絡(luò)請求桥帆,數(shù)據(jù)庫請求,數(shù)據(jù)解析等等慎皱。后來出現(xiàn)了一些框架來幫助開發(fā)者快速進(jìn)行開發(fā)老虫,比如XUtils、Volley茫多、OKHttp祈匙、EventBus等,隨著框架越來越多地梨,一個(gè)應(yīng)用可以有多種技術(shù)選型,直接導(dǎo)致應(yīng)用開發(fā)越來越不規(guī)范缔恳,導(dǎo)致做出來的應(yīng)用質(zhì)量參差不齊宝剖,這顯然不是谷歌想看到的。谷歌隨后推出了MVP和MVVM相關(guān)的官方例子歉甚,效果很一般万细,而且覆蓋面只是在架構(gòu)上,Goole I/O 2018大會(huì)上推出的Android Jetpack有望解決以上的問題。
1.Android Jetpack簡介
Jetpack并不是一個(gè)框架或者組件赖钞,它是一套庫腰素、工具和指南的集合,可幫助開發(fā)者更輕松地編寫優(yōu)質(zhì)應(yīng)用雪营。這些組件可幫助開發(fā)者遵循最佳做法弓千、擺脫編寫樣板代碼的工作并簡化復(fù)雜任務(wù),以便將精力集中放在所需的代碼上献起。 Android Jetpack中的很多組件并不都是新開發(fā)的洋访,而是很早就有了,比如在Goole I/O 2017大會(huì)時(shí)推出了 Android Architecture Component(AAC)谴餐,它包括了LifeCycle姻政、LiveData、ViewModel岂嗓、Room汁展。在Goole I/O 2018大會(huì)上, 用AndroidX替代了Android Support Library厌殉,并在Android Architecture Component的基礎(chǔ)上發(fā)布了Android Jetpack食绿,AndroidX也是屬于Android Jetpack。
Jetpack主要特性有以下三點(diǎn): 1.加速開發(fā) 組件可單獨(dú)使用年枕,也可以協(xié)同工作炫欺,當(dāng)使用kotlin語言特性時(shí),可以提高效率熏兄。
2.消除樣板代碼 Android Jetpack可管理繁瑣的Activity(如后臺任務(wù)品洛、導(dǎo)航和生命周期管理)。
3.構(gòu)建高質(zhì)量的強(qiáng)大應(yīng)用 Android Jetpack組件圍繞現(xiàn)代化設(shè)計(jì)實(shí)踐構(gòu)建而成摩桶,具有向后兼容性桥状,可以減少崩潰和內(nèi)存泄漏。
2.Android Jetpack分類
下圖是Jetpack的分類硝清。
谷歌仍舊不斷的完善Android Jetpack辅斟,截至到2019年8月已經(jīng)有很多新加的組件并沒有顯示在上圖中,比如CameraX等芦拿。Android Jetpack分類有4種士飒,分別是Architecture、Foundationy蔗崎、Behavior酵幕、UI,下面分別介紹下缓苛。
2.1 Architecture(架構(gòu)組件)
Architecture指的是架構(gòu)組件芳撒,幫助開發(fā)者設(shè)計(jì)穩(wěn)健、可測試且易維護(hù)的應(yīng)用。架構(gòu)組件可以說是對應(yīng)用開發(fā)幫助最大的組件笔刹,本系列也是圍繞著架構(gòu)組件進(jìn)行講解芥备。
DataBinding:以聲明方式將可觀察數(shù)據(jù)綁定到界面元素,通常和ViewModel配合使用舌菜。 Lifecycle:用于管理Activity和Fragment的生命周期萌壳,可幫助開發(fā)者生成更易于維護(hù)的輕量級代碼。 LiveData: 在底層數(shù)據(jù)庫更改時(shí)通知視圖酷师。它是一個(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:友好褐望、流暢的訪問SQLite數(shù)據(jù)庫。它在SQLite的基礎(chǔ)上提供了一個(gè)抽象層串前,允許更強(qiáng)大的數(shù)據(jù)庫訪問瘫里。 ViewModel: 以生命周期的方式管理界面相關(guān)的數(shù)據(jù),通常和DataBinding配合使用荡碾,為開發(fā)者實(shí)現(xiàn)MVVM架構(gòu)提供了強(qiáng)有力的支持谨读。 WorkManager: 管理Android的后臺的作業(yè),即使應(yīng)用程序退出或設(shè)備重新啟動(dòng)也可以運(yùn)行可延遲的異步任務(wù)坛吁。
官方推薦的Android應(yīng)用架構(gòu)如下圖所示劳殖。
這些架構(gòu)組件既可以配合使用,也可以單獨(dú)使用拨脉,這里建議還是盡量按照官方推薦的來哆姻。
2.2 Foundationy(基礎(chǔ)組件)
基礎(chǔ)組件提供橫向功能,例如向后兼容性玫膀、測試矛缨、安全、Kotlin 語言支持帖旨,并包括多個(gè)多個(gè)平臺開發(fā)的組件箕昭。
Android KTX:優(yōu)化了供Kotlin使用的Jetpack和Android平臺API。幫助開發(fā)者以更簡潔解阅、更愉悅落竹、更慣用的方式使用Kotlin進(jìn)行Android開發(fā)。 AppCompat:幫助較低版本的Android系統(tǒng)進(jìn)行兼容瓮钥。 Auto: 開發(fā)Android Auto應(yīng)用的組件筋量,提供了適用于所有車輛的標(biāo)準(zhǔn)化界面和用戶交互。 檢測:從AndroidStudio中快速檢測基于Kotlin或Java的代碼碉熄。 多Dex處理:為具有多個(gè)Dex文件應(yīng)用提供支持桨武。 安全:安全的讀寫加密文件和共享偏好設(shè)置。 測試:用于單元和運(yùn)行時(shí)界面測試的Android 測試框架锈津。 TV: 構(gòu)建可讓用戶在大屏幕上體驗(yàn)沉浸式內(nèi)容的應(yīng)用呀酸。 Wear OS:開發(fā)Wear應(yīng)用的組件。
2.3 Behavior(行為組件)
行為組件可幫助開發(fā)者的應(yīng)用與標(biāo)準(zhǔn)Android服務(wù)(如通知琼梆、權(quán)限性誉、分享)相集成。
CameraX:幫助開發(fā)簡化相機(jī)應(yīng)用的開發(fā)工作茎杂。它提供一致且易于使用的界面错览,適用于大多數(shù)Android。 設(shè)備煌往,并可向后兼容至Android 5.0(API 21)倾哺。 DownloadManager:處理長時(shí)間運(yùn)行的HTTP下載的系統(tǒng)服務(wù)。 媒體和播放:用于媒體播放和路由(包括Google Cast)的向后兼容API刽脖。 通知:提供向后兼容的通知API羞海,支持Wear和Auto。 權(quán)限:用于檢查和請求應(yīng)用權(quán)限的兼容性API曲管。 設(shè)置:創(chuàng)建交互式設(shè)置却邓,建議使用AndroidX Preference Library庫將用戶可配置設(shè)置集成到應(yīng)用中。 分享操作:可以更輕松地實(shí)現(xiàn)友好的用戶分享操作院水。 切片:切片是一種UI模板腊徙,創(chuàng)建可在應(yīng)用外部顯示應(yīng)用數(shù)據(jù)的靈活界面元素。
2.4 UI(界面組件)
Animation and Transition:該框架包含用于常見效果的內(nèi)置動(dòng)畫衙耕,并允許開發(fā)者創(chuàng)建自定義動(dòng)畫和生命周期回調(diào)昧穿。 Emoji Compatibility:即便用戶沒有更新Android系統(tǒng)也可以獲取最新的表情符號。 Fragment:組件化界面的基本單位橙喘。 布局:用XML中聲明UI元素或者在代碼中實(shí)例化UI元素时鸵。 調(diào)色板:從調(diào)色板中提取出有用的信息。
3.在應(yīng)用中引入Jetpack相關(guān)組件
在項(xiàng)目build.gradle中添加google() 庫厅瞎,如下所示饰潜。
allprojects {
repositories {
google()
jcenter()
}
}
復(fù)制代碼
如果想引入Room,可以在模塊build.gradle中這么寫:
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1 "
androidTestImplementation "android.arch.persistence.room:testing:1.1.1"
復(fù)制代碼
總結(jié)
這篇文章內(nèi)部不多和簸,旨在讓大家了解Android Jetpack是什么彭雾,包括什么,如何引用锁保,從下一篇開始薯酝,就開始學(xué)習(xí)Android Jetpack的架構(gòu)組件半沽。
本文在開源項(xiàng)目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄,里面包含不同方向的自學(xué)編程路線吴菠、面試題集合/面經(jīng)者填、及系列技術(shù)文章等,資源持續(xù)更新中...
作者:劉望舒
鏈接:https://juejin.cn/post/6844903976815558663
來源:掘金
著作權(quán)歸作者所有做葵。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)占哟,非商業(yè)轉(zhuǎn)載請注明出處。