1.Android Architecture Components是什麼?
Android體系結構元件是一組庫,可幫助您設計健壯,可測試和可維護的應用程式。從用於管理UI元件生命週期和處理資料永續性的類開始。
- 輕鬆管理應用程式的生命週期。新的生命週期感知元件可幫助您管理活動和碎片生命週期。生存配置更改,避免記憶體洩漏並輕鬆將資料載入到UI中。
- 使用LiveData構建資料物件,以便在基礎資料庫更改時通知檢視。
- ViewModel儲存在應用程式輪換中未銷燬的UI相關資料。
- Room是一個SQLite物件對映庫。使用它來避免樣板程式碼並輕鬆地將SQLite表資料轉換為Java物件。Room提供SQLite語句的編譯時檢查,可以返回RxJava,Flowable和LiveData observable。
- Navigation是指允許使用者在應用內的不同內容中導航,匯入和退出的互動。
- Paging Library可幫助您一次載入和顯示小塊資料。按需載入部分資料可減少網路頻寬和系統資源的使用。
- WorkManager可以輕鬆安排即使應用程式退出或裝置重新啟動也可以執行的可延遲的非同步任務。
Google I/O 大會上也對新的元件架構有一些介紹,詳細可以看這個連結。
向專案新增元件
上面對這些元件進行了一些簡單得介紹,接下來自然是要如何向我們的專案中引入這些元件了。這些都是Google官方推出的元件,當然首先需要在你的project的build.gradle中檔案中引入google()啦,向下面這樣就好:
allprojects {
repositories {
google()
jcenter()
}
}
複製程式碼
關於LifeCycles與ViewModel以及LiveData的引入,只需要根據自己的需求在下面進行選擇就好:
dependencies {
def lifecycle_version = "2.0.0"
// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
// alternatively - just ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // For Kotlin use lifecycle-viewmodel-ktx
// alternatively - just LiveData
implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
// alternatively - Lifecycles only (no ViewModel or LiveData). Some UI
// AndroidX libraries use this lightweight import for Lifecycle
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
// alternately - if using Java8, use the following instead of lifecycle-compiler
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "androidx.lifecycle:lifecycle-reactivestreams:$lifecycle_version" // For Kotlin use lifecycle-reactivestreams-ktx
// optional - Test helpers for LiveData
testImplementation "androidx.arch.core:core-testing:$lifecycle_version"
}
複製程式碼
dataBinding的使用需要在app的build.gradle中加入下面的配置:
android {
...
dataBinding {
enabled = true
}
}
複製程式碼
Navigation需要的宣告依賴:
dependencies {
def nav_version = "2.1.0-alpha02"
implementation "androidx.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "androidx.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
複製程式碼
Paging需要的宣告依賴:
dependencies {
def paging_version = "2.1.0"
implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx
// alternatively - without Android dependencies for testing
testImplementation "androidx.paging:paging-common:$paging_version" // For Kotlin use paging-common-ktx
// optional - RxJava support
implementation "androidx.paging:paging-rxjava2:$paging_version" // For Kotlin use paging-rxjava2-ktx
}
複製程式碼
Room需要的宣告依賴:
dependencies {
def room_version = "2.1.0-alpha06"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
// optional - RxJava support for Room
implementation "androidx.room:room-rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:$room_version"
// Test helpers
testImplementation "androidx.room:room-testing:$room_version"
}
複製程式碼
WorkManager需要的宣告依賴:
dependencies {
def work_version = "2.0.1"
// (Java only)
implementation "androidx.work:work-runtime:$work_version"
// Kotlin + coroutines
implementation "androidx.work:work-runtime-ktx:$work_version"
// optional - RxJava2 support
implementation "androidx.work:work-rxjava2:$work_version"
// optional - Test helpers
androidTestImplementation "androidx.work:work-testing:$work_version"
}
複製程式碼
本節總結
本節主要對本系列中會介紹到的元件進行了一些初步的瞭解,我也是在一邊的學習一邊的進行記錄,Architecture Components是JetPack中的一部分,也是非常重要的一部分,Google這兩年一直在對這一套的架構進行不斷的更新,就是想要解決Android開發中的很多痛點,以後Architecture Components作為Android開發的基礎架構也是必然的趨勢,所以就讓我們現在一起來學習它吧。